Просмотр исходного кода

首次投保后台接口完善。

tomatozq 5 лет назад
Родитель
Сommit
81ec05d218
22 измененных файлов с 468 добавлено и 287 удалено
  1. 2 0
      picc-common/src/main/java/com/jpsoft/picc/modules/base/dao/CompanyMemberDAO.java
  2. 1 0
      picc-common/src/main/java/com/jpsoft/picc/modules/base/service/CompanyMemberService.java
  3. 5 0
      picc-common/src/main/java/com/jpsoft/picc/modules/base/service/impl/CompanyMemberServiceImpl.java
  4. 2 0
      picc-common/src/main/java/com/jpsoft/picc/modules/business/dao/ApplicationPolicyDAO.java
  5. 2 0
      picc-common/src/main/java/com/jpsoft/picc/modules/business/dao/InsurancePolicyMemberDAO.java
  6. 18 4
      picc-common/src/main/java/com/jpsoft/picc/modules/business/entity/InsuranceApplication.java
  7. 4 4
      picc-common/src/main/java/com/jpsoft/picc/modules/business/entity/InsurancePolicy.java
  8. 2 0
      picc-common/src/main/java/com/jpsoft/picc/modules/business/service/ApplicationPolicyService.java
  9. 2 0
      picc-common/src/main/java/com/jpsoft/picc/modules/business/service/InsurancePolicyMemberService.java
  10. 5 0
      picc-common/src/main/java/com/jpsoft/picc/modules/business/service/impl/ApplicationPolicyServiceImpl.java
  11. 5 0
      picc-common/src/main/java/com/jpsoft/picc/modules/business/service/impl/InsurancePolicyMemberServiceImpl.java
  12. 1 1
      picc-common/src/main/java/com/jpsoft/picc/modules/common/constant/PolicyStatus.java
  13. 11 0
      picc-common/src/main/resources/mapper/base/CompanyMember.xml
  14. 17 3
      picc-common/src/main/resources/mapper/base/InsuranceDefinitionLimit.xml
  15. 7 2
      picc-common/src/main/resources/mapper/business/ApplicationPolicy.xml
  16. 48 122
      picc-common/src/main/resources/mapper/business/InsuranceApplication.xml
  17. 10 6
      picc-common/src/main/resources/mapper/business/InsurancePolicyMember.xml
  18. 204 68
      picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/controller/InsuranceApplicationController.java
  19. 69 39
      picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/controller/InsurancePolicyUserController.java
  20. 39 0
      picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/dto/AcceptInsuranceDTO.java
  21. 12 18
      picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/dto/InsuranceApplicationDTO.java
  22. 2 20
      picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/dto/InsuranceJobsDTO.java

+ 2 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/base/dao/CompanyMemberDAO.java

@@ -15,4 +15,6 @@ public interface CompanyMemberDAO {
 	int delete(String id);
 	List<CompanyMember> list();
 	List<CompanyMember> search(Map<String, Object> searchParams, List<Sort> sortList);
+
+    List<CompanyMember> findByNotInPolicyMember(String companyId, String policyId);
 }

+ 1 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/base/service/CompanyMemberService.java

@@ -14,4 +14,5 @@ public interface CompanyMemberService {
 	int delete(String id);
 	List<CompanyMember> list();
 	Page<CompanyMember> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, List<Sort> sortList);
+    List<CompanyMember> findByNotInPolicyMember(String companyId, String policyId);
 }

+ 5 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/base/service/impl/CompanyMemberServiceImpl.java

@@ -67,4 +67,9 @@ public class CompanyMemberServiceImpl implements CompanyMemberService {
         
         return page;
 	}
+
+	@Override
+	public List<CompanyMember> findByNotInPolicyMember(String companyId, String policyId) {
+		return companyMemberDAO.findByNotInPolicyMember(companyId,policyId);
+	}
 }

+ 2 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/business/dao/ApplicationPolicyDAO.java

@@ -22,4 +22,6 @@ public interface ApplicationPolicyDAO {
     List<ApplicationPolicy> list();
 
     List<ApplicationPolicy> search(Map<String, Object> searchParams, List<Sort> sortList);
+
+    List<ApplicationPolicy> findByApplicationId(String applicationId);
 }

+ 2 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/business/dao/InsurancePolicyMemberDAO.java

@@ -22,4 +22,6 @@ public interface InsurancePolicyMemberDAO {
     List<InsurancePolicyMember> list();
 
     List<InsurancePolicyMember> search(Map<String, Object> searchParams, List<Sort> sortList);
+
+    long countByPolicyIdAndJobsId(String policyId, String jobsId);
 }

+ 18 - 4
picc-common/src/main/java/com/jpsoft/picc/modules/business/entity/InsuranceApplication.java

@@ -18,6 +18,8 @@ public class InsuranceApplication {
 	private String id;
     @ApiModelProperty(value = "企业ID")
 	private String companyId;
+	@ApiModelProperty(value = "险种名称")
+	private String definitionName;
     @ApiModelProperty(value = "保险种类")
 	private String definitionId;
     @ApiModelProperty(value = "投保人姓名")
@@ -263,8 +265,8 @@ public class InsuranceApplication {
 	/**
 	 *获取保障开始时间
 	 */
-    	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-	@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+	@DateTimeFormat(pattern="yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
 		public Date getStartTime(){
 		return startTime;
 	}
@@ -278,8 +280,8 @@ public class InsuranceApplication {
 	/**
 	 *获取保障结束时间
 	 */
-    	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-	@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+	@DateTimeFormat(pattern="yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
 		public Date getEndTime(){
 		return endTime;
 	}
@@ -398,4 +400,16 @@ public class InsuranceApplication {
 	public void setDelFlag(Boolean delFlag){
 		this.delFlag = delFlag;
 	}
+
+	/**
+	 * 险种名称
+	 * @return
+	 */
+	public String getDefinitionName() {
+		return definitionName;
+	}
+
+	public void setDefinitionName(String definitionName) {
+		this.definitionName = definitionName;
+	}
 }

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

@@ -110,8 +110,8 @@ public class InsurancePolicy {
     /**
      *获取开始时间
      */
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
     public Date getStartTime(){
         return startTime;
     }
@@ -125,8 +125,8 @@ public class InsurancePolicy {
     /**
      *获取结束时间
      */
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
     public Date getEndTime(){
         return endTime;
     }

+ 2 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/business/service/ApplicationPolicyService.java

@@ -21,4 +21,6 @@ public interface ApplicationPolicyService {
     List<ApplicationPolicy> list();
 
     Page<ApplicationPolicy> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, List<Sort> sortList);
+
+    List<ApplicationPolicy> findByApplicationId(String applicationId);
 }

+ 2 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/business/service/InsurancePolicyMemberService.java

@@ -21,4 +21,6 @@ public interface InsurancePolicyMemberService {
     List<InsurancePolicyMember> list();
 
     Page<InsurancePolicyMember> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, List<Sort> sortList);
+
+    long countByPolicyIdAndJobsId(String policyId, String jobsId);
 }

+ 5 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/business/service/impl/ApplicationPolicyServiceImpl.java

@@ -67,4 +67,9 @@ public class ApplicationPolicyServiceImpl implements ApplicationPolicyService {
 
         return page;
     }
+
+    @Override
+    public List<ApplicationPolicy> findByApplicationId(String applicationId) {
+        return applicationPolicyDAO.findByApplicationId(applicationId);
+    }
 }

+ 5 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/business/service/impl/InsurancePolicyMemberServiceImpl.java

@@ -67,4 +67,9 @@ public class InsurancePolicyMemberServiceImpl implements InsurancePolicyMemberSe
 
         return page;
     }
+
+    @Override
+    public long countByPolicyIdAndJobsId(String policyId, String jobsId) {
+        return insurancePolicyMemberDAO.countByPolicyIdAndJobsId(policyId,jobsId);
+    }
 }

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

@@ -16,8 +16,8 @@ public enum PolicyStatus {
     private String text;
 
     PolicyStatus(String text, int value){
-        this.value = value;
         this.text = text;
+        this.value = value;
     }
 
     public int getValue() {

+ 11 - 0
picc-common/src/main/resources/mapper/base/CompanyMember.xml

@@ -115,6 +115,7 @@
 	</select>
 	<select id="list" resultMap="CompanyMemberMap">
 		select t1.*,t2.name_ as job_name from base_company_member t1 left join base_jobs t2 on t1.jobs_id=t2.id_
+		where t1.del_flag=0
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="CompanyMemberMap">
 		<![CDATA[
@@ -136,9 +137,19 @@
 			<if test="searchParams.jobsId != null">
 				and jobs_id = #{searchParams.jobsId}
 			</if>
+			<if test="searchParams.delFlag != null">
+				and del_flag = #{searchParams.delFlag}
+			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">
 	        ${sort.name} ${sort.order}
 	 	</foreach>
 	</select>
+    <select id="findByNotInPolicyMember" resultMap="CompanyMemberMap">
+		select * from base_company_member t1
+		where t1.del_flag=0 and t1.company_id=#{companyId}
+		and t1.id_ not in(
+			select member_id from business_insurance_policy_member where policy_id=#{policyId} and del_flag=0
+		)
+	</select>
 </mapper>

+ 17 - 3
picc-common/src/main/resources/mapper/base/InsuranceDefinitionLimit.xml

@@ -16,7 +16,20 @@
 			<result property="updateBy" column="update_by" />
 			<result property="updateTime" column="update_time" />
 			<association property="definition" column="definition_id" select="com.jpsoft.picc.modules.base.dao.InsuranceDefinitionDAO.get"></association>
-			</resultMap>
+	</resultMap>
+	<resultMap id="InsuranceDefinitionLimitSimpleMap" type="com.jpsoft.picc.modules.base.entity.InsuranceDefinitionLimit">
+		<id property="id" column="id_" />
+		<result property="definitionId" column="definition_id" />
+		<result property="name" column="name_" />
+		<result property="limit" column="limit_" />
+		<result property="unit" column="unit_" />
+		<result property="status" column="status_" />
+		<result property="delFlag" column="del_flag" />
+		<result property="createBy" column="create_by" />
+		<result property="createTime" column="create_time" />
+		<result property="updateBy" column="update_by" />
+		<result property="updateTime" column="update_time" />
+	</resultMap>
 	<insert id="insert" parameterType="com.jpsoft.picc.modules.base.entity.InsuranceDefinitionLimit">
 	<!--
 	<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
@@ -91,8 +104,9 @@ id_,definition_id,name_,limit_,unit_,status_,del_flag,create_by,create_time,upda
 	<select id="list" resultMap="InsuranceDefinitionLimitMap">
 		select * from base_insurance_definition_limit where del_flag=false
 	</select>
-	<select id="findByDefinitionId" parameterType="string" resultMap="InsuranceDefinitionLimitMap">
-		select * from base_insurance_definition_limit where definition_id=#{0}
+	<select id="findByDefinitionId" parameterType="string" resultMap="InsuranceDefinitionLimitSimpleMap">
+		select * from base_insurance_definition_limit where definition_id=#{0} and del_flag=0
+		order by create_time asc
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="InsuranceDefinitionLimitMap">
 		<![CDATA[

+ 7 - 2
picc-common/src/main/resources/mapper/business/ApplicationPolicy.xml

@@ -41,8 +41,7 @@
 	where id_=#{id}
 	</update>
 	<select id="get" parameterType="string" resultMap="ApplicationPolicyMap">
-		select 
-id_,application_id,policy_id		from business_application_policy where id_=#{0}
+		select * from business_application_policy where id_=#{0}
 	</select>
 	<select id="exist" parameterType="string" resultType="int">
 		select count(*) from business_application_policy where id_=#{0}
@@ -66,4 +65,10 @@ id_,application_id,policy_id		from business_application_policy where id_=#{0}
 	        ${sort.name} ${sort.order}
 	 	</foreach>
 	</select>
+    <select id="findByApplicationId" resultMap="ApplicationPolicyMap">
+		SELECT a.* FROM business_application_policy a LEFT JOIN business_insurance_policy b ON a.policy_id = b.id_
+		where a.application_id=#{0}
+		and b.del_flag=0
+		order by b.create_time asc
+	</select>
 </mapper>

+ 48 - 122
picc-common/src/main/resources/mapper/business/InsuranceApplication.xml

@@ -7,6 +7,7 @@
         <id property="id" column="id_"/>
         <result property="companyId" column="company_id"/>
         <result property="definitionId" column="definition_id"/>
+        <result property="definitionName" column="definition_name"/>
         <result property="insuredName" column="insured_name"/>
         <result property="insuredTel" column="insured_tel"/>
         <result property="companyName" column="company_name"/>
@@ -41,31 +42,31 @@
 	    (id_,company_id,definition_id,insured_name,insured_tel,company_name,uscc_code,business_scope,industry_type,tel_,postal_,employees_number,insured_number,company_address,loss_in_recent_years,start_time,end_time,insurance_fee,status_,process_status,create_by,create_time,update_by,update_time,del_flag)
 		values
 		(
-#{id,jdbcType=VARCHAR}
-,#{companyId,jdbcType=VARCHAR}
-,#{definitionId,jdbcType=VARCHAR}
-,#{insuredName,jdbcType=VARCHAR}
-,#{insuredTel,jdbcType=VARCHAR}
-,#{companyName,jdbcType=VARCHAR}
-,#{usccCode,jdbcType=VARCHAR}
-,#{businessScope,jdbcType=VARCHAR}
-,#{industryType,jdbcType=VARCHAR}
-,#{tel,jdbcType=VARCHAR}
-,#{postal,jdbcType=VARCHAR}
-,#{employeesNumber,jdbcType= NUMERIC }
-,#{insuredNumber,jdbcType= NUMERIC }
-,#{companyAddress,jdbcType=VARCHAR}
-,#{lossInRecentYears,jdbcType=VARCHAR}
-,#{startTime,jdbcType= TIMESTAMP }
-,#{endTime,jdbcType= TIMESTAMP }
-,#{insuranceFee,jdbcType= NUMERIC }
-,#{status,jdbcType=VARCHAR}
-,#{processStatus,jdbcType=VARCHAR}
-,#{createBy,jdbcType=VARCHAR}
-,#{createTime,jdbcType= TIMESTAMP }
-,#{updateBy,jdbcType=VARCHAR}
-,#{updateTime,jdbcType= TIMESTAMP }
-,#{delFlag,jdbcType= NUMERIC }
+            #{id,jdbcType=VARCHAR}
+            ,#{companyId,jdbcType=VARCHAR}
+            ,#{definitionId,jdbcType=VARCHAR}
+            ,#{insuredName,jdbcType=VARCHAR}
+            ,#{insuredTel,jdbcType=VARCHAR}
+            ,#{companyName,jdbcType=VARCHAR}
+            ,#{usccCode,jdbcType=VARCHAR}
+            ,#{businessScope,jdbcType=VARCHAR}
+            ,#{industryType,jdbcType=VARCHAR}
+            ,#{tel,jdbcType=VARCHAR}
+            ,#{postal,jdbcType=VARCHAR}
+            ,#{employeesNumber,jdbcType= NUMERIC }
+            ,#{insuredNumber,jdbcType= NUMERIC }
+            ,#{companyAddress,jdbcType=VARCHAR}
+            ,#{lossInRecentYears,jdbcType=VARCHAR}
+            ,#{startTime,jdbcType= TIMESTAMP }
+            ,#{endTime,jdbcType= TIMESTAMP }
+            ,#{insuranceFee,jdbcType= NUMERIC }
+            ,#{status,jdbcType=VARCHAR}
+            ,#{processStatus,jdbcType=VARCHAR}
+            ,#{createBy,jdbcType=VARCHAR}
+            ,#{createTime,jdbcType= TIMESTAMP }
+            ,#{updateBy,jdbcType=VARCHAR}
+            ,#{updateTime,jdbcType= TIMESTAMP }
+            ,#{delFlag,jdbcType= NUMERIC }
 		)
 	]]>
     </insert>
@@ -150,98 +151,8 @@
         </set>
         where id_=#{id}
     </update>
-    <select id="get" parameterType="string" resultMap="InsuranceApplicationMap">
-        select
-        id_,company_id,definition_id,insured_name,insured_tel,company_name,uscc_code,business_scope,industry_type,tel_,postal_,employees_number,insured_number,company_address,loss_in_recent_years,start_time,end_time,insurance_fee,status_,process_status,create_by,create_time,update_by,update_time,del_flag
-        from business_insurance_application where id_=#{0}
-    </select>
-    <select id="exist" parameterType="string" resultType="int">
-        select count(*) from business_insurance_application where id_=#{0}
-    </select>
-    <select id="list" resultMap="InsuranceApplicationMap">
-        select * from business_insurance_application
-    </select>
-    <select id="search" parameterType="hashmap" resultMap="InsuranceApplicationMap">
-        <![CDATA[
-	</insert>
-	<delete id="delete" parameterType="string">
-		delete from business_insurance_application where id_=#{id,jdbcType=VARCHAR}
-	</delete>
-	<update id="update" parameterType="com.jpsoft.picc.modules.business.entity.InsuranceApplication">
-		update business_insurance_application
-		<set>
-				<if test="companyId!=null">
-		company_id=#{companyId,jdbcType=VARCHAR},
-		</if>
-				<if test="definitionId!=null">
-		definition_id=#{definitionId,jdbcType=VARCHAR},
-		</if>
-				<if test="insuredName!=null">
-		insured_name=#{insuredName,jdbcType=VARCHAR},
-		</if>
-				<if test="insuredTel!=null">
-		insured_tel=#{insuredTel,jdbcType=VARCHAR},
-		</if>
-				<if test="companyName!=null">
-		company_name=#{companyName,jdbcType=VARCHAR},
-		</if>
-				<if test="usccCode!=null">
-		uscc_code=#{usccCode,jdbcType=VARCHAR},
-		</if>
-				<if test="businessScope!=null">
-		business_scope=#{businessScope,jdbcType=VARCHAR},
-		</if>
-				<if test="industryType!=null">
-		industry_type=#{industryType,jdbcType=VARCHAR},
-		</if>
-				<if test="employeesNumber!=null">
-		employees_number=#{employeesNumber,jdbcType= NUMERIC },
-		</if>
-				<if test="insuredNumber!=null">
-		insured_number=#{insuredNumber,jdbcType= NUMERIC },
-		</if>
-				<if test="companyAddress!=null">
-		company_address=#{companyAddress,jdbcType=VARCHAR},
-		</if>
-				<if test="lossInRecentYears!=null">
-		loss_in_recent_years=#{lossInRecentYears,jdbcType=VARCHAR},
-		</if>
-				<if test="startTime!=null">
-		start_time=#{startTime,jdbcType= TIMESTAMP },
-		</if>
-				<if test="endTime!=null">
-		end_time=#{endTime,jdbcType= TIMESTAMP },
-		</if>
-				<if test="insuranceFee!=null">
-		insurance_fee=#{insuranceFee,jdbcType= NUMERIC },
-		</if>
-				<if test="status!=null">
-		status_=#{status,jdbcType=VARCHAR},
-		</if>
-				<if test="processStatus!=null">
-		process_status=#{processStatus,jdbcType=VARCHAR},
-		</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="delFlag!=null">
-		del_flag=#{delFlag,jdbcType= NUMERIC },
-		</if>
-		</set>
-	where id_=#{id}
-	</update>
 	<select id="get" parameterType="string" resultMap="InsuranceApplicationMap">
-		select
-id_,company_id,definition_id,insured_name,insured_tel,company_name,uscc_code,business_scope,industry_type,employees_number,insured_number,company_address,loss_in_recent_years,start_time,end_time,insurance_fee,status_,process_status,create_by,create_time,update_by,update_time,del_flag		from business_insurance_application where id_=#{0}
+		select * from business_insurance_application where id_=#{0}
 	</select>
 	<select id="exist" parameterType="string" resultType="int">
 		select count(*) from business_insurance_application where id_=#{0} and del_flag = false
@@ -251,17 +162,32 @@ id_,company_id,definition_id,insured_name,insured_tel,company_name,uscc_code,bus
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="InsuranceApplicationMap">
 		<![CDATA[
-			select * from business_insurance_application
+		    select * from (
+                select t1.*,t2.name_ as definition_name
+                from business_insurance_application t1
+                left join base_insurance_definition t2 on t1.definition_id = t2.id_
+			) as t
 		]]>
         <where>
-            <if test="searchParams.id != null">
-                and ID_ like #{searchParams.id}
-            </if>
+            del_flag=0
             <if test="searchParams.companyId != null">
-                and company_id like #{searchParams.companyId}
+                and company_id = #{searchParams.companyId}
             </if>
             <if test="searchParams.status != null">
-                and status_ like #{searchParams.status}
+                and status_ = #{searchParams.status}
+            </if>
+            <if test="searchParams.definitionId != null">
+                and definition_id = #{searchParams.definitionId}
+            </if>
+            <if test="searchParams.startTime != null">
+                <![CDATA[
+                and start_time>=#{searchParams.startTime}
+                ]]>
+            </if>
+            <if test="searchParams.endTime != null">
+                <![CDATA[
+                and start_time<=#{searchParams.endTime}
+                ]]>
             </if>
         </where>
         <foreach item="sort" collection="sortList" open="order by" separator=",">

+ 10 - 6
picc-common/src/main/resources/mapper/business/InsurancePolicyMember.xml

@@ -77,8 +77,7 @@
 	where id_=#{id}
 	</update>
 	<select id="get" parameterType="string" resultMap="InsurancePolicyMemberMap">
-		select 
-id_,policy_id,member_id,status_,is_add,del_flag,create_by,create_time,update_by,update_time		from business_insurance_policy_member where id_=#{0}
+		select * from business_insurance_policy_member where id_=#{0}
 	</select>
 	<select id="exist" parameterType="string" resultType="int">
 		select count(*) from business_insurance_policy_member where id_=#{0}
@@ -88,19 +87,24 @@ id_,policy_id,member_id,status_,is_add,del_flag,create_by,create_time,update_by,
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="InsurancePolicyMemberMap">
 		<![CDATA[
-			select * from business_insurance_policy_member a LEFT JOIN base_company_member b ON a.member_id = b.id_
+			select * from business_insurance_policy_member
 		]]>
 		<where>
-			and del_flag = false
+			del_flag = false
 			<if test="searchParams.policyId != null">
-				and a.policy_id like #{searchParams.policyId}
+				and policy_id like #{searchParams.policyId}
 			</if>
 			<if test="searchParams.jobsId != null">
-				and b.jobs_id like #{searchParams.jobsId}
+				and jobs_id like #{searchParams.jobsId}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">
 	        ${sort.name} ${sort.order}
 	 	</foreach>
 	</select>
+    <select id="countByPolicyIdAndJobsId" resultType="java.lang.Long">
+		select count(*) from business_insurance_policy_member t1,base_company_member t2
+		where t1.del_flag=0 and t1.policy_id=#{policyId}
+		and t1.member_id=t2.id_ and t2.jobs_id = #{jobsId}
+	</select>
 </mapper>

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

@@ -1,20 +1,21 @@
 package com.jpsoft.picc.modules.auth.controller;
 
+import cn.hutool.core.date.DateUnit;
 import com.github.pagehelper.Page;
+import com.jpsoft.picc.modules.auth.dto.AcceptInsuranceDTO;
 import com.jpsoft.picc.modules.auth.dto.InsuranceApplicationDTO;
 import com.jpsoft.picc.modules.auth.dto.InsuranceJobsDTO;
-import com.jpsoft.picc.modules.base.entity.Company;
-import com.jpsoft.picc.modules.base.entity.InsuranceDefinition;
-import com.jpsoft.picc.modules.base.entity.InsuranceDefinitionLimit;
-import com.jpsoft.picc.modules.base.entity.InsuranceJobs;
-import com.jpsoft.picc.modules.base.service.CompanyService;
-import com.jpsoft.picc.modules.base.service.InsuranceDefinitionLimitService;
-import com.jpsoft.picc.modules.base.service.InsuranceDefinitionService;
-import com.jpsoft.picc.modules.base.service.InsuranceJobsService;
+import com.jpsoft.picc.modules.base.entity.*;
+import com.jpsoft.picc.modules.base.service.*;
+import com.jpsoft.picc.modules.business.dao.InsurancePolicyDAO;
+import com.jpsoft.picc.modules.business.entity.ApplicationPolicy;
 import com.jpsoft.picc.modules.business.entity.InsuranceApplication;
+import com.jpsoft.picc.modules.business.entity.InsurancePolicy;
 import com.jpsoft.picc.modules.business.entity.InsurancePolicyMember;
+import com.jpsoft.picc.modules.business.service.ApplicationPolicyService;
 import com.jpsoft.picc.modules.business.service.InsuranceApplicationService;
 import com.jpsoft.picc.modules.business.service.InsurancePolicyMemberService;
+import com.jpsoft.picc.modules.business.service.InsurancePolicyService;
 import com.jpsoft.picc.modules.common.constant.PolicyStatus;
 import com.jpsoft.picc.modules.common.dto.MessageResult;
 import com.jpsoft.picc.modules.common.dto.Sort;
@@ -25,9 +26,13 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.jasig.cas.client.authentication.AttributePrincipal;
+import org.joda.time.DateTime;
+import org.joda.time.Interval;
+import org.joda.time.Period;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -43,6 +48,9 @@ public class InsuranceApplicationController {
     @Autowired
     private InsuranceApplicationService insuranceApplicationService;
 
+    @Autowired
+    private InsurancePolicyService insurancePolicyService;
+
     @Autowired
     private InsuranceDefinitionService insuranceDefinitionService;
 
@@ -58,13 +66,24 @@ public class InsuranceApplicationController {
     @Autowired
     private InsurancePolicyMemberService insurancePolicyMemberService;
 
+    @Autowired
+    private JobsService jobsService;
+
+    @Autowired
+    private ApplicationPolicyService applicationPolicyService;
+
     @ApiOperation(value="投保单列表")
     @RequestMapping(value = "pageList",method = RequestMethod.POST)
     @ApiImplicitParams({
-//            @ApiImplicitParam(name = "status",value = "状态:草稿10/待初审20/待复审30/待缴费40/待制单50/待出单60/已出单70/已过期100", required = true, paramType = "form",dataType = "String")
+        @ApiImplicitParam(name = "status",value = "状态:草稿10/待初审20/待复审30/待缴费40/待制单50/待出单60/已出单70/", 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"),
     })
     public MessageResult<Map> pageList(
-//            @RequestParam(value="status",defaultValue="") String status,
+            String status,String definitionId,
+            @DateTimeFormat(pattern = "yyyy-MM-dd") Date startTime,
+            @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime,
             @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
             @RequestParam(value="pageSize",defaultValue="20") int pageSize,
             HttpServletRequest request){
@@ -76,12 +95,28 @@ public class InsuranceApplicationController {
         Map<String,Object> searchParams = new HashMap<>();
 
         List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("id_","asc"));
+        sortList.add(new Sort("create_time","desc"));
 
         if (StringUtils.isNotEmpty(company.getId())) {
             searchParams.put("companyId",company.getId());
         }
 
+        if (StringUtils.isNotEmpty(definitionId)) {
+            searchParams.put("definitionId",definitionId);
+        }
+
+        if (StringUtils.isNotEmpty(status)) {
+            searchParams.put("status",status);
+        }
+
+        if (startTime!=null) {
+            searchParams.put("startTime",startTime);
+        }
+
+        if (endTime!=null) {
+            searchParams.put("endTime",endTime);
+        }
+
         Page<InsuranceApplication> page = insuranceApplicationService.pageSearch(searchParams,pageIndex,pageSize,sortList);
 
         msgResult.setResult(true);
@@ -90,12 +125,12 @@ public class InsuranceApplicationController {
         return msgResult;
     }
 
-    @ApiOperation(value="获取投保信息")
-    @RequestMapping(value = "insureDetail",method = RequestMethod.POST)
+    @ApiOperation(value="第一步,获取投保信息,注意将applicationId,policyId,companyId保存到前台,便于关联")
+    @RequestMapping(value = "insureDetail",method = RequestMethod.GET)
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "id",value = "编号", required = true, paramType = "form",dataType = "String")
+            @ApiImplicitParam(name = "applicationId",value = "投保编号", required = false, paramType = "query",dataType = "String")
     })
-    public MessageResult<InsuranceApplicationDTO> insureDetail(@RequestParam(value="id",defaultValue="") String id,
+    public MessageResult<InsuranceApplicationDTO> insureDetail(@RequestParam(value="applicationId",defaultValue="") String applicationId,
                                                           HttpServletRequest request){
         MessageResult<InsuranceApplicationDTO> msgResult = new MessageResult<>();
 
@@ -112,16 +147,27 @@ public class InsuranceApplicationController {
         InsuranceApplicationDTO insuranceApplicationDTO = new InsuranceApplicationDTO();
 
         try {
-            InsuranceApplication insuranceApplication = insuranceApplicationService.get(id);
+
+            InsuranceApplication insuranceApplication = null;
+
+            if (StringUtils.isNotEmpty(applicationId)) {
+                insuranceApplication = insuranceApplicationService.get(applicationId);
+            }
 
             if (insuranceApplication != null) {
-                insuranceApplication = insuranceApplicationService.get(id);
                 PojoUtils.map(insuranceApplication, insuranceApplicationDTO);
+                insuranceApplicationDTO.setApplicationId(insuranceApplication.getId());
+
+                DateTime endTime = new DateTime(insuranceApplication.getEndTime());
+                DateTime startTime = new DateTime(insuranceApplication.getStartTime());
+                Interval interval = new Interval(startTime, endTime);
+
+                insuranceApplicationDTO.setMonthNumber(interval.toPeriod().getMonths());
             } else {
+                //先生成主键,便于参保人员关联
+                insuranceApplicationDTO.setApplicationId(UUID.randomUUID().toString());
+
                 insuranceApplicationDTO.setCompanyId(company.getId());
-//                insuranceApplicationDTO.setDefinitionId();
-//                insuranceApplicationDTO.setStartTime();
-//                insuranceApplicationDTO.setEndTime();
                 insuranceApplicationDTO.setInsuredName(company.getName());
                 insuranceApplicationDTO.setInsuredTel(company.getTel());
                 insuranceApplicationDTO.setCompanyName(company.getName());
@@ -133,8 +179,21 @@ public class InsuranceApplicationController {
                 insuranceApplicationDTO.setInsuredNumber(company.getInsuredNumber());
                 insuranceApplicationDTO.setTel(company.getTel());
                 insuranceApplicationDTO.setPostal(company.getPostal());
-                insuranceApplication.setCompanyAddress(company.getAddress());
-                insuranceApplication.setLossInRecentYears(company.getRemark());
+                insuranceApplicationDTO.setCompanyAddress(company.getAddress());
+                insuranceApplicationDTO.setLossInRecentYears(company.getRemark());
+
+            }
+
+            //读取每月投保单编号
+            List<ApplicationPolicy> relatePolicyList = applicationPolicyService.findByApplicationId(applicationId);
+
+            if (relatePolicyList.size()==0){
+                //生成首月投保编号
+                insuranceApplicationDTO.setPolicyId(UUID.randomUUID().toString());
+            }
+            else{
+                //首月投保
+                insuranceApplicationDTO.setPolicyId(relatePolicyList.get(0).getPolicyId());
             }
 
             msgResult.setData(insuranceApplicationDTO);
@@ -149,54 +208,100 @@ public class InsuranceApplicationController {
         return msgResult;
     }
 
-    @ApiOperation(value="获取承保信息")
-    @RequestMapping(value = "acceptDetail",method = RequestMethod.POST)
+    @ApiOperation(value="第三步,获取承保信息")
+    @RequestMapping(value = "acceptDetail",method = RequestMethod.GET)
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "ApplicationId",value = "投保单ID", required = true, paramType = "form",dataType = "String"),
-            @ApiImplicitParam(name = "policyId",value = "每月投保单ID", required = true, paramType = "form",dataType = "String"),
+            @ApiImplicitParam(name = "applicationId",value = "投保单ID", required = true,paramType = "query",dataType = "String"),
+            @ApiImplicitParam(name = "policyId",value = "每月投保单ID", required = true,paramType = "query",dataType = "String"),
     })
-    public MessageResult<Map<String,Object>> acceptDetail(@RequestParam(value="ApplicationId",defaultValue="") String ApplicationId,
+    public MessageResult<AcceptInsuranceDTO> acceptDetail(@RequestParam(value="applicationId",defaultValue="") String applicationId,
                                                           @RequestParam(value="policyId",defaultValue="") String policyId){
-        MessageResult<Map<String,Object>> msgResult = new MessageResult<>();
-        Map<String,Object> objectMap = new HashMap<>();
+        MessageResult<AcceptInsuranceDTO> msgResult = new MessageResult<>();
+        AcceptInsuranceDTO acceptInsuranceDTO = new AcceptInsuranceDTO();
 
         try {
-            InsuranceApplication insuranceApplication = insuranceApplicationService.get(ApplicationId);
+            //投保单
+            InsuranceApplication insuranceApplication = insuranceApplicationService.get(applicationId);
 
+            //险种
             InsuranceDefinition insuranceDefinition = insuranceDefinitionService.get(insuranceApplication.getDefinitionId());
 
+            //险种名称
+            acceptInsuranceDTO.setInsuranceDefName(insuranceDefinition.getName());
+
             Map<String,Object> searchParams = new HashMap<>();
             searchParams.put("definitionId",insuranceApplication.getDefinitionId());
             List<Sort> sortList = new ArrayList<>();
-            sortList.add(new Sort("id_","asc"));
+            sortList.add(new Sort("create_time","asc"));
+
+            //险种关联限额
+            List<InsuranceDefinitionLimit> insuranceDefinitionLimits = insuranceDefinitionLimitService.findByDefinitionId(insuranceApplication.getDefinitionId());
+
+            acceptInsuranceDTO.setInsuranceDefLimitList(insuranceDefinitionLimits);
 
-            Page<InsuranceDefinitionLimit> insuranceDefinitionLimitPage = insuranceDefinitionLimitService.pageSearch(searchParams,1,100,sortList);
-            insuranceDefinition.setLimits(insuranceDefinitionLimitPage.getResult());
+            //关联岗位
             Page<InsuranceJobs> insuranceJobsPage = insuranceJobsService.pageSearch(searchParams,1,100,sortList);
-            BigDecimal allMoney = new BigDecimal(0);
+
+            DateTime endTime = new DateTime(insuranceApplication.getEndTime());
+            acceptInsuranceDTO.setEndTime(insuranceApplication.getEndTime());
+
+            DateTime startTime = new DateTime(insuranceApplication.getStartTime());
+            acceptInsuranceDTO.setStartTime(insuranceApplication.getStartTime());
+
+            Interval interval = new Interval(startTime, endTime);
+
+            //投保总月份
+            int months = interval.toPeriod().getMonths();
+            BigDecimal totalAmount = new BigDecimal(0);
+            int totalNumber = 0;
+
+            List<InsuranceJobsDTO> insuranceJobsList = new ArrayList<>();
+
+            //查询不同岗位,参保费用
             for(InsuranceJobs insuranceJobs : insuranceJobsPage.getResult()){
+                Jobs jobs = jobsService.get(insuranceJobs.getJobsId());
+
                 InsuranceJobsDTO insuranceJobsDTO = new InsuranceJobsDTO();
-                PojoUtils.map(insuranceApplication, insuranceJobsDTO);
 
-                Map<String,Object> searchParams1 = new HashMap<>();
-                searchParams1.put("policyId",policyId);
-                searchParams1.put("jobsId",insuranceJobs.getJobsId());
-                List<Sort> sortList1 = new ArrayList<>();
-                sortList1.add(new Sort("id_","asc"));
-                Page<InsurancePolicyMember> insurancePolicyMemberPage = insurancePolicyMemberService.pageSearch(searchParams1,1,100,sortList1);
+                insuranceJobsDTO.setJobs(jobs);
 
-                insuranceJobsDTO.setChargesY(insuranceJobsDTO.getCharges().multiply(new BigDecimal(12)));
-                insuranceJobsDTO.setNumber(insurancePolicyMemberPage.size());
-                insuranceJobsDTO.setMoney(insuranceJobsDTO.getCharges().multiply(new BigDecimal(insurancePolicyMemberPage.size())));
+                long memberCount = insurancePolicyMemberService.countByPolicyIdAndJobsId(policyId,insuranceJobs.getJobsId());
 
-                allMoney.add(insuranceJobsDTO.getCharges().multiply(new BigDecimal(insurancePolicyMemberPage.size())));
+                insuranceJobsDTO.setCharges(insuranceJobs.getCharges());
+                insuranceJobsDTO.setChargesY(insuranceJobs.getCharges().multiply(new BigDecimal(12)));
+                insuranceJobsDTO.setNumber(Long.valueOf(memberCount).intValue());
+
+                insuranceJobsDTO.setMoney(insuranceJobsDTO.getCharges()
+                        .multiply(new BigDecimal(months))
+                        .multiply(new BigDecimal(insuranceJobsDTO.getNumber())));
+
+                totalAmount = totalAmount.add(insuranceJobsDTO.getMoney());
+                totalNumber += memberCount;
+
+                insuranceJobsList.add(insuranceJobsDTO);
             }
 
-            objectMap.put("insuranceDefinition",insuranceDefinition);
-            objectMap.put("insuranceJobs",insuranceJobsPage.getResult());
-            objectMap.put("allMoney",allMoney);
+            acceptInsuranceDTO.setInsuranceJobsList(insuranceJobsList);
+            acceptInsuranceDTO.setTotalAmount(totalAmount);
+
+            msgResult.setData(acceptInsuranceDTO);
 
-            msgResult.setData(objectMap);
+            //更新投保单
+            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);
@@ -211,21 +316,35 @@ public class InsuranceApplicationController {
     @ApiOperation(value="提交保单")
     @RequestMapping(value = "submit",method = RequestMethod.POST)
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "id",value = "编号", required = true, paramType = "form",dataType = "String")
+            @ApiImplicitParam(name = "applicationId",value = "投保单编号", required = true, paramType = "form",dataType = "String"),
+            @ApiImplicitParam(name = "policyId",value = "每月投保单编号", required = true, paramType = "form",dataType = "String")
     })
-    public MessageResult<InsuranceApplication> submit(@RequestParam(value="id",defaultValue="") String id,
+    public MessageResult<InsuranceApplication> submit(String applicationId,
+                                                      String policyId,
                                                       HttpServletRequest request){
         AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
 
         MessageResult<InsuranceApplication> msgResult = new MessageResult<>();
 
         try {
-            InsuranceApplication insuranceApplication = insuranceApplicationService.get(id);
+            InsuranceApplication insuranceApplication = insuranceApplicationService.get(applicationId);
 
             insuranceApplication.setStatus(String.valueOf(PolicyStatus.PendingTrial.getValue()));
             insuranceApplication.setUpdateBy(principal.getName());
             insuranceApplication.setUpdateTime(new Date());
-            int affectCount = insuranceApplicationService.update(insuranceApplication);
+
+            insuranceApplicationService.update(insuranceApplication);
+
+            //更新每月投保单
+            InsurancePolicy insurancePolicy = insurancePolicyService.get(policyId);
+
+            insurancePolicy.setStartTime(insuranceApplication.getStartTime());
+            insurancePolicy.setEndTime(insuranceApplication.getEndTime());
+            insurancePolicy.setStatus(String.valueOf(PolicyStatus.PendingTrial.getValue()));
+            insurancePolicy.setUpdateBy(principal.getName());
+            insurancePolicy.setUpdateTime(new Date());
+
+            insurancePolicyService.update(insurancePolicy);
 
             msgResult.setResult(true);
         }
@@ -239,33 +358,50 @@ public class InsuranceApplicationController {
         return msgResult;
     }
 
-    @ApiOperation(value="保存草稿(如果点击保存,需要将返回的ID写入前台参数。如果点击下一步,需要将ID作为参数带入下个页面)")
+    @ApiOperation(value="保存草稿")
     @RequestMapping(value = "saveDraft",method = RequestMethod.POST)
-    public MessageResult<InsuranceApplicationDTO> saveDraft(@ModelAttribute InsuranceApplicationDTO insuranceApplicationDTO,
-                                                        HttpServletRequest request){
+    public MessageResult<InsuranceApplicationDTO> saveDraft(InsuranceApplicationDTO insuranceApplicationDTO,
+                                                        HttpServletRequest request
+    ){
         AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
-        Company company = companyService.findByCreateBy(principal.getName());
+//        Company company = companyService.findByCreateBy(principal.getName());
 
         MessageResult<InsuranceApplicationDTO> msgResult = new MessageResult<>();
-        InsuranceApplication insuranceApplication = new InsuranceApplication();
+        InsuranceApplication insuranceApplication = null;
 
         try {
             int affectCount = 0;
-            if(insuranceApplicationDTO.getId() == null){
-                insuranceApplicationDTO.setId(UUID.randomUUID().toString());
-                insuranceApplicationDTO.setCompanyId(company.getId());
-                insuranceApplicationDTO.setStatus(String.valueOf(PolicyStatus.Draft));
-                insuranceApplicationDTO.setDelFlag(false);
-                insuranceApplicationDTO.setCreateBy(principal.getName());
-                insuranceApplicationDTO.setCreateTime(new Date());
 
+            if(StringUtils.isNotEmpty(insuranceApplicationDTO.getApplicationId())) {
+                insuranceApplication = insuranceApplicationService.get(insuranceApplicationDTO.getApplicationId());
+            }
+
+            DateTime startTime = new DateTime(insuranceApplicationDTO.getStartTime());
+
+            DateTime endTime = startTime.plusMonths(insuranceApplicationDTO.getMonthNumber());
+
+            if(insuranceApplication==null){
+                insuranceApplication = new InsuranceApplication();
                 PojoUtils.map(insuranceApplicationDTO, insuranceApplication);
+
+                insuranceApplication.setId(insuranceApplicationDTO.getApplicationId());
+//                insuranceApplication.setCompanyId(company.getId());
+                insuranceApplication.setStatus(String.valueOf(PolicyStatus.Draft.getValue()));
+
+                insuranceApplication.setEndTime(endTime.toDate());
+
+                insuranceApplication.setDelFlag(false);
+                insuranceApplication.setCreateBy(principal.getName());
+                insuranceApplication.setCreateTime(new Date());
+
                 affectCount = insuranceApplicationService.insert(insuranceApplication);
             }else {
-                insuranceApplicationDTO.setUpdateBy(principal.getName());
-                insuranceApplicationDTO.setUpdateTime(new Date());
-
                 PojoUtils.map(insuranceApplicationDTO, insuranceApplication);
+
+                insuranceApplication.setEndTime(endTime.toDate());
+                insuranceApplication.setUpdateBy(principal.getName());
+                insuranceApplication.setUpdateTime(new Date());
+
                 affectCount = insuranceApplicationService.update(insuranceApplication);
             }
 

+ 69 - 39
picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/controller/InsurancePolicyUserController.java

@@ -58,13 +58,15 @@ public class InsurancePolicyUserController {
     @Autowired
     private InsurancePolicyService insurancePolicyService;
 
-    @ApiOperation(value="读取参保人员分页列表")
+    @ApiOperation(value="读取每月参保人员分页列表")
     @RequestMapping(value = "pageList",method = RequestMethod.POST)
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "ApplicationId",value = "投保单ID", required = true, paramType = "form",dataType = "String")
+            @ApiImplicitParam(name = "applicationId",value = "投保单编号,首次投保用", required = false, paramType = "form",dataType = "String"),
+            @ApiImplicitParam(name = "policyId",value = "每月投保单编号", required = true, paramType = "form",dataType = "String")
     })
     public MessageResult<Map> pageList(
             @RequestParam(value="applicationId",defaultValue="") String applicationId,
+            @RequestParam(value="policyId",defaultValue="") String policyId,
             @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
             @RequestParam(value="pageSize",defaultValue="20") int pageSize,
             HttpServletRequest request){
@@ -72,42 +74,40 @@ public class InsurancePolicyUserController {
         Company company = companyService.findByCreateBy(principal.getName());
 
         MessageResult<Map> msgResult = new MessageResult<>();
-        String policyId = "";
-
-        List<Sort> sortList1 = new ArrayList<>();
-        sortList1.add(new Sort("b.effective_date","desc"));
-        Map<String,Object> searchParams1 = new HashMap<>();
-        searchParams1.put("applicationId",applicationId);
-        Page<ApplicationPolicy> page1 = applicationPolicyService.pageSearch(searchParams1,1,100,sortList1);
-        if(page1.size() == 0){
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
-            InsuranceApplication insuranceApplication = insuranceApplicationService.get(applicationId);
-
-            InsurancePolicy insurancePolicy = new InsurancePolicy();
-            insurancePolicy.setId(UUID.randomUUID().toString());
-            insurancePolicy.setEffectiveDate(sdf.format(insuranceApplication.getStartTime()));
-            insurancePolicy.setDelFlag(false);
-            insurancePolicy.setCreateBy(principal.getName());
-            insurancePolicy.setCreateTime(new Date());
-            insurancePolicy.setNo(1);
-            int affectCount = insurancePolicyService.insert(insurancePolicy);
-            if(affectCount > 0){
-                policyId = insurancePolicy.getId();
-
-                ApplicationPolicy applicationPolicy = new ApplicationPolicy();
-                applicationPolicy.setId(UUID.randomUUID().toString());
-                applicationPolicy.setApplicationId(applicationId);
-                applicationPolicy.setPolicyId(policyId);
-                applicationPolicyService.insert(applicationPolicy);
+
+        if (StringUtils.isNotEmpty(applicationId)) {
+            List<ApplicationPolicy> relatePolicyList = applicationPolicyService.findByApplicationId(applicationId);
+
+            if (relatePolicyList.size() == 0) {
+                InsurancePolicy insurancePolicy = new InsurancePolicy();
+                insurancePolicy.setId(policyId);
+
+                insurancePolicy.setDelFlag(false);
+                insurancePolicy.setCreateBy(principal.getName());
+                insurancePolicy.setCreateTime(new Date());
+                insurancePolicy.setNo(1);
+
+                int affectCount = insurancePolicyService.insert(insurancePolicy);
+
+                if (affectCount > 0) {
+                    policyId = insurancePolicy.getId();
+
+                    ApplicationPolicy applicationPolicy = new ApplicationPolicy();
+                    applicationPolicy.setId(UUID.randomUUID().toString());
+
+                    applicationPolicy.setApplicationId(applicationId);
+                    applicationPolicy.setPolicyId(policyId);
+
+                    applicationPolicyService.insert(applicationPolicy);
+                }
             }
-        }else {
-            policyId = page1.get(0).getPolicyId();
         }
 
         List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("id_","asc"));
+        sortList.add(new Sort("create_time","asc"));
         Map<String,Object> searchParams = new HashMap<>();
         searchParams.put("policyId",policyId);
+
         Page<InsurancePolicyMember> page = insurancePolicyMemberService.pageSearch(searchParams,pageIndex,pageSize,sortList);
 
         msgResult.setResult(true);
@@ -116,11 +116,38 @@ public class InsurancePolicyUserController {
         return msgResult;
     }
 
-    @ApiOperation(value="添加参保人员(添加完成后,要将policyId作为参数,传至下一页)")
+    @ApiOperation(value="读取可参保人员列表")
+    @PostMapping("loadCompanyMemberList")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "policyId",value = "每月投保单ID", required = true, paramType = "form",dataType = "String"),
+     })
+    public MessageResult<List<CompanyMember>> loadCompanyMemberList(HttpServletRequest request,String policyId){
+        MessageResult<List<CompanyMember>> msgResult = new MessageResult<>();
+
+        AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
+        Company company = companyService.findByCreateBy(principal.getName());
+
+        try {
+            List<CompanyMember> memberList = companyMemberService.findByNotInPolicyMember(company.getId(),policyId);
+
+            msgResult.setData(memberList);
+            msgResult.setResult(true);
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="添加参保人员")
     @PostMapping("add")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "policyId",value = "每月投保单ID", required = true, paramType = "form",dataType = "String"),
-            @ApiImplicitParam(name = "memberIds",value = "企业用户ID", required = true, paramType = "form",dataType = "String"),
+            @ApiImplicitParam(name = "memberIds",value = "企业用户ID,用,分隔", required = true, paramType = "form",dataType = "String"),
     })
     public MessageResult<String> add(@RequestParam(value="policyId",defaultValue="") String policyId,
                                                     @RequestParam(value="memberIds",defaultValue="") String memberIds,
@@ -132,18 +159,22 @@ public class InsurancePolicyUserController {
 
         try {
             int affectCount = 0;
-            String[] memberId = memberIds.split("|");
-            for(String li : memberId) {
+            String[] memberIdArr = memberIds.split(",");
+
+            for(String memberId : memberIdArr) {
                 InsurancePolicyMember insurancePolicyMember = new InsurancePolicyMember();
+
                 insurancePolicyMember.setId(UUID.randomUUID().toString());
                 insurancePolicyMember.setPolicyId(policyId);
-                insurancePolicyMember.setMemberId(li);
+                insurancePolicyMember.setMemberId(memberId);
                 insurancePolicyMember.setStatus("0");
+
                 insurancePolicyMember.setDelFlag(false);
                 insurancePolicyMember.setCreateBy(principal.getName());
                 insurancePolicyMember.setCreateTime(new Date());
 
                 Integer count = insurancePolicyMemberService.insert(insurancePolicyMember);
+
                 if(count > 0){
                     affectCount++;
                 }
@@ -208,11 +239,10 @@ public class InsurancePolicyUserController {
     @ApiOperation(value="批量导入参保人员")
     @PostMapping("batchImport")
     @ApiImplicitParams({
-//            @ApiImplicitParam(name = "companyId",value = "企业ID", required = true, paramType = "form",dataType = "String"),
             @ApiImplicitParam(name = "policyId",value = "每月投保单ID", required = true, paramType = "form",dataType = "String"),
             @ApiImplicitParam(name = "uploadFile",value = "上传文件", required = true,paramType="form", dataType = "__file")
     })
-    public MessageResult<String> batchImport(//@RequestParam(value="companyId",defaultValue="") String companyId,
+    public MessageResult<String> batchImport(
                                              @RequestParam(value="policyId",defaultValue="") String policyId,
                                             MultipartFile uploadFile,
                                             HttpServletRequest request){

+ 39 - 0
picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/dto/AcceptInsuranceDTO.java

@@ -0,0 +1,39 @@
+package com.jpsoft.picc.modules.auth.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jpsoft.picc.modules.base.entity.InsuranceDefinitionLimit;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@ApiModel(value = "参保信息")
+public class AcceptInsuranceDTO {
+    @ApiModelProperty(value = "险种")
+    private String insuranceDefName;
+
+    @ApiModelProperty(value = "险种限额列表")
+    private List<InsuranceDefinitionLimit> insuranceDefLimitList;
+
+    @ApiModelProperty(value = "行业/职业类型及收费标准")
+    private List<InsuranceJobsDTO> insuranceJobsList;
+
+    @ApiModelProperty(value = "总金额")
+    private BigDecimal totalAmount;
+
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
+    @ApiModelProperty(value = "保险起始时间")
+    private Date startTime;
+
+
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
+    @ApiModelProperty(value = "保险结束时间")
+    private Date endTime;
+}

+ 12 - 18
picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/dto/InsuranceApplicationDTO.java

@@ -1,8 +1,10 @@
 package com.jpsoft.picc.modules.auth.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -10,8 +12,8 @@ import java.util.Date;
 @Data
 @ApiModel(value = "企业信息")
 public class InsuranceApplicationDTO {
-    @ApiModelProperty(value = "ID")
-    private String id;
+    @ApiModelProperty(value = "投保单编号")
+    private String applicationId;
     @ApiModelProperty(value = "企业ID")
     private String companyId;
     @ApiModelProperty(value = "保险种类")
@@ -42,26 +44,18 @@ public class InsuranceApplicationDTO {
     private String companyAddress;
     @ApiModelProperty(value = "近三年损失情况")
     private String lossInRecentYears;
-    @ApiModelProperty(value = "保障开始时间")
+
+    @ApiModelProperty(value = "保障开始时间",required = true)
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
     private Date startTime;
-    @ApiModelProperty(value = "保障结束时间")
-    private Date endTime;
-    @ApiModelProperty(value = "保障月份数量")
+
+    @ApiModelProperty(value = "保障月份数量",required = true)
     private Integer monthNumber;
-    @ApiModelProperty(value = "保险费合计(总金额)")
-    private BigDecimal insuranceFee;
     @ApiModelProperty(value = "状态:草稿10/待初审20/待复审30/待缴费40/待制单50/待出单60/已出单70/已过期100")
     private String status;
     @ApiModelProperty(value = "流程审核状态:正常/回退等")
     private String processStatus;
-    @ApiModelProperty(value = "创建人")
-    private String createBy;
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-    @ApiModelProperty(value = "更新人")
-    private String updateBy;
-    @ApiModelProperty(value = "更新时间")
-    private Date updateTime;
-    @ApiModelProperty(value = "是否删除")
-    private Boolean delFlag;
+    @ApiModelProperty(value = "每月投保单编号")
+    private String policyId;
 }

+ 2 - 20
picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/dto/InsuranceJobsDTO.java

@@ -10,18 +10,10 @@ import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
-@ApiModel(value = "收费标准")
+@ApiModel(value = "岗位及收费标准")
 public class InsuranceJobsDTO {
-    @ApiModelProperty(value = "编号")
-    private String id;
-    @ApiModelProperty(value = "行业ID")
-    private String jobsId;
-    @ApiModelProperty(value = "险种信息ID")
-    private String definitionId;
-    @ApiModelProperty(value = "行业实体")
+    @ApiModelProperty(value = "岗位")
     private Jobs jobs;
-    @ApiModelProperty(value = "险种信息实体")
-    private InsuranceDefinition definition;
     @ApiModelProperty(value = "收费标准(月)")
     private BigDecimal charges;
     @ApiModelProperty(value = "收费标准(年)")
@@ -30,14 +22,4 @@ public class InsuranceJobsDTO {
     private Integer number;
     @ApiModelProperty(value = "保险费")
     private BigDecimal money;
-    @ApiModelProperty(value = "是否删除")
-    private Boolean delFlag;
-    @ApiModelProperty(value = "创建人")
-    private String createBy;
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-    @ApiModelProperty(value = "修改人")
-    private String updateBy;
-    @ApiModelProperty(value = "修改时间")
-    private Date updateTime;
 }