Pārlūkot izejas kodu

1.增加投保单状态。
2.参保人员表增加被替换人字段。

tomatozq 5 gadi atpakaļ
vecāks
revīzija
2616c44ba3

+ 10 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/business/entity/InsurancePolicyMember.java

@@ -16,6 +16,7 @@ public class InsurancePolicyMember {
     private String id;
     private String policyId;
     private String memberId;
+    private String replaceMemberId;
     private String status;
     private Boolean isAdd;
     private Boolean delFlag;
@@ -192,4 +193,13 @@ public class InsurancePolicyMember {
     public void setCompanyMember(CompanyMember companyMember){
         this.companyMember = companyMember;
     }
+
+    @ApiModelProperty(value = "被替换的用户ID")
+    public String getReplaceMemberId() {
+        return replaceMemberId;
+    }
+
+    public void setReplaceMemberId(String replaceMemberId) {
+        this.replaceMemberId = replaceMemberId;
+    }
 }

+ 3 - 1
picc-common/src/main/java/com/jpsoft/picc/modules/common/constant/PolicyStatus.java

@@ -5,12 +5,14 @@ package com.jpsoft.picc.modules.common.constant;
  */
 public enum PolicyStatus {
     Draft("草稿",10),
+    Back("已退回",15),
     PendingTrial("待初审",20),
     PendingRetrial("待复审",30),
     PendingPay("待缴费",40),
     PendingMakePolicy("待制单",50),
     PendingOutPolicy("待出单",60),
-    SendOutPolicy("已出单",70);
+    SendOutPolicy("已出单",70),
+    Expired("已过期",100);
 
     private int value;
     private String text;

+ 10 - 1
picc-common/src/main/resources/mapper/business/InsuranceApplication.xml

@@ -174,7 +174,16 @@
                 and company_id = #{searchParams.companyId}
             </if>
             <if test="searchParams.status != null">
-                and status_ = #{searchParams.status}
+                <choose>
+                    <when test="searchParams.status == 100">
+                    <![CDATA[
+                        and end_time<now()
+		            ]]>
+                    </when>
+                    <otherwise>
+                        and status_ = #{searchParams.status}
+                    </otherwise>
+                </choose>
             </if>
             <if test="searchParams.definitionId != null">
                 and definition_id = #{searchParams.definitionId}

+ 50 - 45
picc-common/src/main/resources/mapper/business/InsurancePolicyMember.xml

@@ -7,6 +7,7 @@
 		<id property="id" column="id_" />
 			<result property="policyId" column="policy_id" />
 			<result property="memberId" column="member_id" />
+			<result property="replaceMemberId" column="replace_member_id" />
 			<result property="status" column="status_" />
 			<result property="isAdd" column="is_add" />
 			<result property="delFlag" column="del_flag" />
@@ -17,26 +18,27 @@
 			<association property="companyMember" column="member_id" select="com.jpsoft.picc.modules.base.dao.CompanyMemberDAO.get"/>
 			</resultMap>
 	<insert id="insert" parameterType="com.jpsoft.picc.modules.business.entity.InsurancePolicyMember">
-	<!--
-	<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
-		select sys_guid() from dual
-	</selectKey>
-	-->
-	<![CDATA[
+		<!--
+        <selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
+            select sys_guid() from dual
+        </selectKey>
+        -->
+		<![CDATA[
 		insert into business_insurance_policy_member
-	    (id_,policy_id,member_id,status_,is_add,del_flag,create_by,create_time,update_by,update_time)
+	    (id_,policy_id,member_id,replace_member_id,status_,is_add,del_flag,create_by,create_time,update_by,update_time)
 		values
 		(
-#{id,jdbcType=VARCHAR}
-,#{policyId,jdbcType=VARCHAR}
-,#{memberId,jdbcType=VARCHAR}
-,#{status,jdbcType=VARCHAR}
-,#{isAdd,jdbcType= NUMERIC }
-,#{delFlag,jdbcType= NUMERIC }
-,#{createBy,jdbcType=VARCHAR}
-,#{createTime,jdbcType= TIMESTAMP }
-,#{updateBy,jdbcType=VARCHAR}
-,#{updateTime,jdbcType= TIMESTAMP }
+			#{id,jdbcType=VARCHAR}
+			,#{policyId,jdbcType=VARCHAR}
+			,#{memberId,jdbcType=VARCHAR}
+			,#{replaceMemberId,jdbcType=VARCHAR}
+			,#{status,jdbcType=VARCHAR}
+			,#{isAdd,jdbcType= NUMERIC }
+			,#{delFlag,jdbcType= NUMERIC }
+			,#{createBy,jdbcType=VARCHAR}
+			,#{createTime,jdbcType= TIMESTAMP }
+			,#{updateBy,jdbcType=VARCHAR}
+			,#{updateTime,jdbcType= TIMESTAMP }
 		)
 	]]>
 	</insert>
@@ -46,35 +48,38 @@
 	<update id="update" parameterType="com.jpsoft.picc.modules.business.entity.InsurancePolicyMember">
 		update business_insurance_policy_member
 		<set>
-				<if test="policyId!=null">
-		policy_id=#{policyId,jdbcType=VARCHAR},
-		</if>
-				<if test="memberId!=null">
-		member_id=#{memberId,jdbcType=VARCHAR},
-		</if>
-				<if test="status!=null">
-		status_=#{status,jdbcType=VARCHAR},
-		</if>
-				<if test="isAdd!=null">
-		is_add=#{isAdd,jdbcType= NUMERIC },
-		</if>
-				<if test="delFlag!=null">
-		del_flag=#{delFlag,jdbcType= NUMERIC },
-		</if>
-				<if test="createBy!=null">
-		create_by=#{createBy,jdbcType=VARCHAR},
-		</if>
-				<if test="createTime!=null">
-		create_time=#{createTime,jdbcType= TIMESTAMP },
-		</if>
-				<if test="updateBy!=null">
-		update_by=#{updateBy,jdbcType=VARCHAR},
-		</if>
-				<if test="updateTime!=null">
-		update_time=#{updateTime,jdbcType= TIMESTAMP },
-		</if>
+			<if test="policyId!=null">
+				policy_id=#{policyId,jdbcType=VARCHAR},
+			</if>
+			<if test="memberId!=null">
+				member_id=#{memberId,jdbcType=VARCHAR},
+			</if>
+			<if test="replaceMemberId!=null">
+				replace_member_id=#{replaceMemberId,jdbcType=VARCHAR},
+			</if>
+			<if test="status!=null">
+				status_=#{status,jdbcType=VARCHAR},
+			</if>
+			<if test="isAdd!=null">
+				is_add=#{isAdd,jdbcType= NUMERIC },
+			</if>
+			<if test="delFlag!=null">
+				del_flag=#{delFlag,jdbcType= NUMERIC },
+			</if>
+			<if test="createBy!=null">
+				create_by=#{createBy,jdbcType=VARCHAR},
+			</if>
+			<if test="createTime!=null">
+				create_time=#{createTime,jdbcType= TIMESTAMP },
+			</if>
+			<if test="updateBy!=null">
+				update_by=#{updateBy,jdbcType=VARCHAR},
+			</if>
+			<if test="updateTime!=null">
+				update_time=#{updateTime,jdbcType= TIMESTAMP },
+			</if>
 		</set>
-	where id_=#{id}
+		where id_=#{id}
 	</update>
 	<select id="get" parameterType="string" resultMap="InsurancePolicyMemberMap">
 		select * from business_insurance_policy_member where id_=#{0}

+ 4 - 0
picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/controller/ApplicationPolicyController.java

@@ -0,0 +1,4 @@
+package com.jpsoft.picc.modules.auth.controller;
+
+public class ApplicationPolicyController {
+}

+ 51 - 25
picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/controller/InsuranceApplicationController.java

@@ -37,6 +37,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 @Api(description="投保信息")
@@ -75,7 +76,7 @@ public class InsuranceApplicationController {
     @ApiOperation(value="投保单列表")
     @RequestMapping(value = "pageList",method = RequestMethod.POST)
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "status",value = "状态:草稿10/待初审20/待复审30/待缴费40/待制单50/待出单60/已出单70/", required = true, paramType = "form",dataType = "String"),
+        @ApiImplicitParam(name = "status",value = "状态:草稿10/已退回15/待初审20/待复审30/待缴费40/待制单50/待出单60/已出单70/已过期100", required = true, paramType = "form",dataType = "String"),
         @ApiImplicitParam(name = "definitionId",value = "险种编号", required = false, paramType = "form",dataType = "String"),
         @ApiImplicitParam(name = "startTime",value = "险种编号", required = false, paramType = "form",dataType = "String"),
         @ApiImplicitParam(name = "endTime",value = "险种编号", required = false, paramType = "form",dataType = "String"),
@@ -197,6 +198,8 @@ public class InsuranceApplicationController {
             }
 
             msgResult.setData(insuranceApplicationDTO);
+
+            msgResult.setResult(true);
         }
         catch(Exception ex){
             logger.error(ex.getMessage(),ex);
@@ -208,6 +211,16 @@ public class InsuranceApplicationController {
         return msgResult;
     }
 
+    private List<InsuranceJobs> findByDefinitionId(String definitionId){
+        Map<String,Object> searchParams = new HashMap<>();
+        searchParams.put("definitionId",definitionId);
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("create_time","asc"));
+        Page<InsuranceJobs> insuranceJobsPage = insuranceJobsService.pageSearch(searchParams,1,100,sortList);
+
+        return insuranceJobsPage.getResult();
+    }
+
     @ApiOperation(value="第三步,获取承保信息")
     @RequestMapping(value = "acceptDetail",method = RequestMethod.GET)
     @ApiImplicitParams({
@@ -229,18 +242,13 @@ public class InsuranceApplicationController {
             //险种名称
             acceptInsuranceDTO.setInsuranceDefName(insuranceDefinition.getName());
 
-            Map<String,Object> searchParams = new HashMap<>();
-            searchParams.put("definitionId",insuranceApplication.getDefinitionId());
-            List<Sort> sortList = new ArrayList<>();
-            sortList.add(new Sort("create_time","asc"));
-
             //险种关联限额
             List<InsuranceDefinitionLimit> insuranceDefinitionLimits = insuranceDefinitionLimitService.findByDefinitionId(insuranceApplication.getDefinitionId());
 
             acceptInsuranceDTO.setInsuranceDefLimitList(insuranceDefinitionLimits);
 
             //关联岗位
-            Page<InsuranceJobs> insuranceJobsPage = insuranceJobsService.pageSearch(searchParams,1,100,sortList);
+            List<InsuranceJobs> InsuranceJobsList = findByDefinitionId(insuranceApplication.getDefinitionId());
 
             DateTime endTime = new DateTime(insuranceApplication.getEndTime());
             acceptInsuranceDTO.setEndTime(insuranceApplication.getEndTime());
@@ -252,13 +260,14 @@ public class InsuranceApplicationController {
 
             //投保总月份
             int months = interval.toPeriod().getMonths();
+
             BigDecimal totalAmount = new BigDecimal(0);
             int totalNumber = 0;
 
             List<InsuranceJobsDTO> insuranceJobsList = new ArrayList<>();
 
             //查询不同岗位,参保费用
-            for(InsuranceJobs insuranceJobs : insuranceJobsPage.getResult()){
+            for(InsuranceJobs insuranceJobs : InsuranceJobsList){
                 Jobs jobs = jobsService.get(insuranceJobs.getJobsId());
 
                 InsuranceJobsDTO insuranceJobsDTO = new InsuranceJobsDTO();
@@ -285,23 +294,6 @@ public class InsuranceApplicationController {
             acceptInsuranceDTO.setTotalAmount(totalAmount);
 
             msgResult.setData(acceptInsuranceDTO);
-
-            //更新投保单
-            insuranceApplication.setInsuranceFee(totalAmount);
-            insuranceApplication.setInsuredNumber(totalNumber);
-            insuranceApplication.setUpdateTime(new Date());
-            insuranceApplicationService.update(insuranceApplication);
-
-            //更新每月投保单
-            InsurancePolicy insurancePolicy = insurancePolicyService.get(policyId);
-
-            if (insurancePolicy!=null){
-                insurancePolicy.setInsuranceFee(totalAmount);
-                insurancePolicy.setNumber(totalNumber);
-                insurancePolicy.setUpdateTime(new Date());
-
-                insurancePolicyService.update(insurancePolicy);
-            }
         }
         catch(Exception ex){
             logger.error(ex.getMessage(),ex);
@@ -329,6 +321,33 @@ public class InsuranceApplicationController {
         try {
             InsuranceApplication insuranceApplication = insuranceApplicationService.get(applicationId);
 
+            DateTime endTime = new DateTime(insuranceApplication.getEndTime());
+            DateTime startTime = new DateTime(insuranceApplication.getStartTime());
+
+            Interval interval = new Interval(startTime, endTime);
+
+            //投保总月份
+            int months = interval.toPeriod().getMonths();
+
+            BigDecimal totalAmount = new BigDecimal(0);
+            int totalNumber = 0;
+
+            List<InsuranceJobs> InsuranceJobsList = findByDefinitionId(insuranceApplication.getDefinitionId());
+
+            //查询不同岗位,参保费用
+            for(InsuranceJobs insuranceJobs : InsuranceJobsList){
+                long memberCount = insurancePolicyMemberService.countByPolicyIdAndJobsId(policyId,insuranceJobs.getJobsId());
+
+                BigDecimal amount = insuranceJobs.getCharges()
+                                    .multiply(new BigDecimal(months))
+                                    .multiply(new BigDecimal(memberCount));
+
+                totalAmount = totalAmount.add(amount);
+                totalNumber += memberCount;
+            }
+
+            insuranceApplication.setInsuranceFee(totalAmount);
+            insuranceApplication.setInsuredNumber(totalNumber);
             insuranceApplication.setStatus(String.valueOf(PolicyStatus.PendingTrial.getValue()));
             insuranceApplication.setUpdateBy(principal.getName());
             insuranceApplication.setUpdateTime(new Date());
@@ -338,6 +357,13 @@ public class InsuranceApplicationController {
             //更新每月投保单
             InsurancePolicy insurancePolicy = insurancePolicyService.get(policyId);
 
+            insurancePolicy.setInsuranceFee(totalAmount);
+            insurancePolicy.setNumber(totalNumber);
+            insurancePolicy.setNo(1); //首页
+
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
+            insurancePolicy.setEffectiveDate(sdf.format(insuranceApplication.getStartTime()));
+
             insurancePolicy.setStartTime(insuranceApplication.getStartTime());
             insurancePolicy.setEndTime(insuranceApplication.getEndTime());
             insurancePolicy.setStatus(String.valueOf(PolicyStatus.PendingTrial.getValue()));