zhengqiang 5 роки тому
батько
коміт
c32db772d9

+ 4 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/base/entity/CompanyMember.java

@@ -31,6 +31,10 @@ public class CompanyMember {
 	private String cardNo;
     @ApiModelProperty(value = "性别")
 	private Boolean sex;
+	@DateTimeFormat(pattern="yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
+	@ApiModelProperty(value = "生日")
+	private Date birthday;
     @ApiModelProperty(value = "年龄")
 	private Integer age;
     @ApiModelProperty(value = "岗位ID")

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

@@ -36,4 +36,6 @@ public interface ApplicationPolicyDAO {
     List<InsuranceApplication> findApplicationByPolicyId(String policyId);
 
     InsurancePolicy findFirstPolicyByApplicationId(String applicationId);
+
+    InsurancePolicy findLastPolicyByApplicationId(String applicationId);
 }

+ 1 - 12
picc-common/src/main/java/com/jpsoft/picc/modules/business/service/ApplicationPolicyService.java

@@ -11,28 +11,17 @@ import java.util.Map;
 
 public interface ApplicationPolicyService {
     ApplicationPolicy get(String id);
-
     ApplicationPolicy getDetail(String applicationId,String policyId);
-
     boolean exist(String id);
-
     int insert(ApplicationPolicy model);
-
     int update(ApplicationPolicy model);
-
     int delete(String id);
-
     List<ApplicationPolicy> list();
-
     Page<ApplicationPolicy> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, List<Sort> sortList);
-
     Page<ApplicationPolicy> otherSearch(Map<String, Object> searchParams, int pageNum, int pageSize, List<Sort> sortList);
-
     List<ApplicationPolicy> findByApplicationId(String applicationId);
-
     Page<InsurancePolicy> findPolicyByApplicationId(String applicationId, int pageIndex, int pageSize);
-
     List<InsuranceApplication> findApplicationByPolicyId(String policyId);
-
     InsurancePolicy findFirstPolicyByApplicationId(String applicationId);
+    InsurancePolicy findLastPolicyByApplicationId(String applicationId);
 }

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

@@ -107,4 +107,9 @@ public class ApplicationPolicyServiceImpl implements ApplicationPolicyService {
     public InsurancePolicy findFirstPolicyByApplicationId(String applicationId){
         return applicationPolicyDAO.findFirstPolicyByApplicationId(applicationId);
     }
+
+    @Override
+    public InsurancePolicy findLastPolicyByApplicationId(String applicationId){
+        return applicationPolicyDAO.findLastPolicyByApplicationId(applicationId);
+    }
 }

+ 0 - 2
picc-common/src/main/java/com/jpsoft/picc/modules/common/utils/POIUtils.java

@@ -411,8 +411,6 @@ public class POIUtils {
                     for (int i = 0; i < dataRow1.getLastCellNum(); i++) {
                         if (dataRow1.getCell(i) != null) {
                             dataRow2.createCell(i).setCellValue((String) getCellValue(0, srcRowIndex, i));
-                        } else {
-                            break;
                         }
                     }
 

+ 8 - 1
picc-common/src/main/resources/mapper/base/CompanyMember.xml

@@ -10,6 +10,7 @@
         <result property="cardType" column="card_type"/>
         <result property="cardNo" column="card_no"/>
         <result property="sex" column="sex_"/>
+        <result property="birthday" column="birthday_"/>
         <result property="age" column="age_"/>
         <result property="jobsId" column="jobs_id"/>
         <result property="jobName" column="job_name"/>
@@ -34,7 +35,9 @@
         -->
         <![CDATA[
 		insert into base_company_member
-	    (id_,company_id,name_,card_type,card_no,sex_,age_,jobs_id,health_status,card_files,status_,create_by,create_time,update_by,update_time,del_flag)
+	    (id_,company_id,name_,card_type,card_no,sex_,
+	    birthday_,age_,jobs_id,health_status,card_files,status_,
+	    create_by,create_time,update_by,update_time,del_flag)
 		values
 		(
 			#{id,jdbcType=VARCHAR}
@@ -43,6 +46,7 @@
 			,#{cardType,jdbcType=VARCHAR}
 			,#{cardNo,jdbcType=VARCHAR}
 			,#{sex,jdbcType= NUMERIC }
+			,#{birthday,jdbcType= TIMESTAMP }
 			,#{age,jdbcType= NUMERIC }
 			,#{jobsId,jdbcType=VARCHAR}
 			,#{healthStatus,jdbcType=VARCHAR}
@@ -77,6 +81,9 @@
             <if test="sex!=null">
                 sex_=#{sex,jdbcType= NUMERIC },
             </if>
+            <if test="birthday!=null">
+                birthday_=#{birthday,jdbcType= NUMERIC },
+            </if>
             <if test="age!=null">
                 age_=#{age,jdbcType= NUMERIC },
             </if>

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

@@ -150,4 +150,11 @@
 		and b.del_flag=0
 		order by b.create_time asc
 	</select>
+	<select id="findLastPolicyByApplicationId" resultMap="com.jpsoft.picc.modules.business.dao.InsurancePolicyDAO.InsurancePolicyMap">
+		SELECT b.* FROM business_application_policy a,business_insurance_policy b
+		where a.application_id=#{0}
+		and a.policy_id = b.id_
+		and b.del_flag=0
+		order by b.create_time desc limit 1
+	</select>
 </mapper>

+ 17 - 2
picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/controller/CompanyMemberController.java

@@ -210,7 +210,13 @@ public class CompanyMemberController {
                 if (StringUtils.isNotEmpty(jobsId)) companyMember.setJobsId(jobsId);
                 if (StringUtils.isNotEmpty(healthStatus)) companyMember.setHealthStatus(healthStatus);
                 if (StringUtils.isNotEmpty(cardFiles)) companyMember.setCardFiles(cardFiles);
-//            if(StringUtils.isNotEmpty(status)) companyMember.setStatus(status);
+
+                CheckIdCard cic = new CheckIdCard(cardNo);
+
+                if (cic.validate()){
+                    companyMember.setBirthday(cic.getBirthDate());
+                }
+
                 companyMember.setDelFlag(false);
                 companyMember.setCreateBy(principal.getName());
                 companyMember.setCreateTime(new Date());
@@ -306,7 +312,13 @@ public class CompanyMemberController {
             if(StringUtils.isNotEmpty(jobsId)) companyMember.setJobsId(jobsId);
             if(StringUtils.isNotEmpty(healthStatus)) companyMember.setHealthStatus(healthStatus);
             if(StringUtils.isNotEmpty(cardFiles)) companyMember.setCardFiles(cardFiles);
-//            if(StringUtils.isNotEmpty(status)) companyMember.setStatus(status);
+
+            CheckIdCard cic = new CheckIdCard(cardNo);
+
+            if (cic.validate()){
+                companyMember.setBirthday(cic.getBirthDate());
+            }
+
             companyMember.setUpdateBy(principal.getName());
             companyMember.setUpdateTime(new Date());
 
@@ -457,6 +469,9 @@ public class CompanyMemberController {
 
                                 continue;
                             }
+                            else{
+                                companyMember.setBirthday(cic.getBirthDate());
+                            }
                         }
 
                         companyMember.setCardNo(cardNo);

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

@@ -6,10 +6,7 @@ import com.jpsoft.picc.modules.auth.dto.InsuranceApplicationDTO;
 import com.jpsoft.picc.modules.auth.dto.InsuranceJobsDTO;
 import com.jpsoft.picc.modules.base.entity.*;
 import com.jpsoft.picc.modules.base.service.*;
-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.InsurancePolicyRecord;
+import com.jpsoft.picc.modules.business.entity.*;
 import com.jpsoft.picc.modules.business.service.*;
 import com.jpsoft.picc.config.JpCloudConfig;
 import com.jpsoft.picc.modules.common.constant.PolicyStatus;
@@ -27,10 +24,13 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hpsf.Decimal;
 import org.jasig.cas.client.authentication.AttributePrincipal;
 import org.joda.time.DateTime;
+import org.joda.time.Days;
 import org.joda.time.Interval;
 import org.joda.time.Months;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -772,4 +772,102 @@ public class InsuranceApplicationController {
 
         return msgResult;
     }
+
+
+    @ResponseBody
+    @ApiOperation(value="快速续保")
+    @ApiImplicitParam(name = "applicationId",value = "投保单编号",paramType ="form",required = true)
+    @PostMapping(value="/renew")
+    @Transactional
+    public MessageResult<String> renew(String applicationId,HttpServletRequest request){
+        AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
+        MessageResult<String> msgResult = new MessageResult<>();
+
+        try {
+            InsuranceApplication srcApplication = insuranceApplicationService.get(applicationId);
+            InsuranceApplication destApplication = new InsuranceApplication();
+
+            PojoUtils.map(srcApplication,destApplication);
+
+            destApplication.setId(UUID.randomUUID().toString());
+            destApplication.setStatus(PolicyStatus.Draft.getValue()  + "");
+
+            destApplication.setCreateBy(principal.getName());
+            destApplication.setCreateTime(new Date());
+
+            String policyNo = insuranceApplicationService.generatePolicyNo(destApplication.getCreateTime(),1);
+            destApplication.setPolicyNo(policyNo);
+
+            DateTime srcStartTime = new DateTime(srcApplication.getStartTime());
+            DateTime srcEndTime = new DateTime(srcApplication.getEndTime());
+
+            //todo 修改投保时间
+            destApplication.setStartTime(srcApplication.getEndTime());
+            int days = Days.daysBetween(srcStartTime,srcEndTime).getDays();
+
+            destApplication.setEndTime(srcEndTime.plusDays(days).toDate());
+            destApplication.setCombinePolicyId(null);
+            destApplication.setFinishTime(null);
+            destApplication.setUpdateBy(null);
+            destApplication.setUpdateTime(null);
+
+            insuranceApplicationService.insert(destApplication);
+
+            //todo 新增一份每月投保单
+            InsurancePolicy destPolicy = new InsurancePolicy();
+            destPolicy.setId(UUID.randomUUID().toString());
+            destPolicy.setLatestApplicationId(destApplication.getId());
+            destPolicy.setPolicyNo(destApplication.getPolicyNo());
+
+            destPolicy.setDelFlag(false);
+            destPolicy.setCreateBy(principal.getName());
+            destPolicy.setCreateTime(new Date());
+            destPolicy.setNo(1);
+
+            int affectCount = insurancePolicyService.insert(destPolicy);
+
+            InsurancePolicy lastPolicy = applicationPolicyService.findLastPolicyByApplicationId(srcApplication.getId());
+
+            if (affectCount > 0) {
+                //todo 将投保人导入
+                List<InsurancePolicyMember> memberList = insurancePolicyMemberService.findByPolicyId(lastPolicy.getId());
+
+                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(principal.getName());
+                    destMember.setCreateTime(new Date());
+                    destMember.setStatus(srcMember.getStatus());
+
+                    insurancePolicyMemberService.insert(destMember);
+                }
+
+                //todo 关联投保申请单月与每月投保单
+                ApplicationPolicy applicationPolicy = new ApplicationPolicy();
+                applicationPolicy.setId(UUID.randomUUID().toString());
+
+                applicationPolicy.setApplicationId(destApplication.getId());
+                applicationPolicy.setPolicyId(destPolicy.getId());
+
+                applicationPolicyService.insert(applicationPolicy);
+            }
+
+            msgResult.setData(destApplication.getId());
+            msgResult.setResult(true);
+        }
+        catch(Exception ex){
+            log.error(ex.getMessage(),ex);
+
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
 }