Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

yanliming 5 yıl önce
ebeveyn
işleme
0bb025653b
33 değiştirilmiş dosya ile 1260 ekleme ve 667 silme
  1. 2 1
      picc-common/src/main/java/com/jpsoft/picc/modules/base/dao/CompanyMemberDAO.java
  2. 6 214
      picc-common/src/main/java/com/jpsoft/picc/modules/base/entity/CompanyMember.java
  3. 1 0
      picc-common/src/main/java/com/jpsoft/picc/modules/base/service/CompanyMemberService.java
  4. 5 0
      picc-common/src/main/java/com/jpsoft/picc/modules/base/service/impl/CompanyMemberServiceImpl.java
  5. 2 0
      picc-common/src/main/java/com/jpsoft/picc/modules/business/dao/ApplicationPolicyDAO.java
  6. 2 0
      picc-common/src/main/java/com/jpsoft/picc/modules/business/dao/InsurancePolicyMemberDAO.java
  7. 48 4
      picc-common/src/main/java/com/jpsoft/picc/modules/business/entity/InsuranceApplication.java
  8. 126 128
      picc-common/src/main/java/com/jpsoft/picc/modules/business/entity/InsurancePolicy.java
  9. 2 0
      picc-common/src/main/java/com/jpsoft/picc/modules/business/service/ApplicationPolicyService.java
  10. 2 0
      picc-common/src/main/java/com/jpsoft/picc/modules/business/service/InsurancePolicyMemberService.java
  11. 5 0
      picc-common/src/main/java/com/jpsoft/picc/modules/business/service/impl/ApplicationPolicyServiceImpl.java
  12. 5 0
      picc-common/src/main/java/com/jpsoft/picc/modules/business/service/impl/InsurancePolicyMemberServiceImpl.java
  13. 1 1
      picc-common/src/main/java/com/jpsoft/picc/modules/common/constant/PolicyStatus.java
  14. 27 6
      picc-common/src/main/resources/mapper/base/CompanyMember.xml
  15. 1 1
      picc-common/src/main/resources/mapper/base/InsuranceDefinition.xml
  16. 17 3
      picc-common/src/main/resources/mapper/base/InsuranceDefinitionLimit.xml
  17. 5 2
      picc-common/src/main/resources/mapper/base/InsuranceJobs.xml
  18. 1 1
      picc-common/src/main/resources/mapper/base/Jobs.xml
  19. 13 5
      picc-common/src/main/resources/mapper/business/ApplicationPolicy.xml
  20. 179 148
      picc-common/src/main/resources/mapper/business/InsuranceApplication.xml
  21. 26 22
      picc-common/src/main/resources/mapper/business/InsurancePolicy.xml
  22. 12 5
      picc-common/src/main/resources/mapper/business/InsurancePolicyMember.xml
  23. 2 2
      picc-common/src/main/resources/mapper/business/InsurancePolicyRecord.xml
  24. 60 40
      picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/controller/CompanyMemberController.java
  25. 322 48
      picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/controller/InsuranceApplicationController.java
  26. 6 9
      picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/controller/InsuranceDefinitionController.java
  27. 68 0
      picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/controller/InsurancePolicyController.java
  28. 118 27
      picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/controller/InsurancePolicyUserController.java
  29. 43 0
      picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/controller/JobsController.java
  30. 39 0
      picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/dto/AcceptInsuranceDTO.java
  31. 61 0
      picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/dto/InsuranceApplicationDTO.java
  32. 25 0
      picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/dto/InsuranceJobsDTO.java
  33. 28 0
      picc-enterprise-server/src/main/resources/application-remote.yml

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

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

+ 6 - 214
picc-common/src/main/java/com/jpsoft/picc/modules/base/entity/CompanyMember.java

@@ -4,6 +4,8 @@ import java.io.Serializable;
 import java.util.Date;
 import java.text.SimpleDateFormat;
 import java.math.BigDecimal;
+
+import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
@@ -12,6 +14,7 @@ import io.swagger.annotations.ApiModel;
 /**
   描述:base_company_member的实体类
  */
+@Data
 @ApiModel(value = "base_company_member的实体类")
 public class CompanyMember {
     @ApiModelProperty(value = "ID")
@@ -28,8 +31,10 @@ public class CompanyMember {
 	private Boolean sex;
     @ApiModelProperty(value = "年龄")
 	private Integer age;
-    @ApiModelProperty(value = "行业ID")
+    @ApiModelProperty(value = "岗位ID")
 	private String jobsId;
+	@ApiModelProperty(value = "岗位名称")
+	private String jobName;
     @ApiModelProperty(value = "健康状态")
 	private String healthStatus;
     @ApiModelProperty(value = "身份证附件")
@@ -46,217 +51,4 @@ public class CompanyMember {
 	private Date updateTime;
     @ApiModelProperty(value = "是否删除")
 	private Boolean delFlag;
-
-	/**
-	 *获取ID
-	 */
-    	public String getId(){
-		return id;
-	}
-	
-	/**
-	 *设置ID
-	 */
-	public void setId(String id){
-		this.id = id;
-	}
-	/**
-	 *获取企业ID
-	 */
-    	public String getCompanyId(){
-		return companyId;
-	}
-	
-	/**
-	 *设置企业ID
-	 */
-	public void setCompanyId(String companyId){
-		this.companyId = companyId;
-	}
-	/**
-	 *获取姓名
-	 */
-    	public String getName(){
-		return name;
-	}
-	
-	/**
-	 *设置姓名
-	 */
-	public void setName(String name){
-		this.name = name;
-	}
-	/**
-	 *获取证件类型
-	 */
-    	public String getCardType(){
-		return cardType;
-	}
-	
-	/**
-	 *设置证件类型
-	 */
-	public void setCardType(String cardType){
-		this.cardType = cardType;
-	}
-	/**
-	 *获取证件编号
-	 */
-    	public String getCardNo(){
-		return cardNo;
-	}
-	
-	/**
-	 *设置证件编号
-	 */
-	public void setCardNo(String cardNo){
-		this.cardNo = cardNo;
-	}
-	/**
-	 *获取性别
-	 */
-    	public Boolean getSex(){
-		return sex;
-	}
-	
-	/**
-	 *设置性别
-	 */
-	public void setSex(Boolean sex){
-		this.sex = sex;
-	}
-	/**
-	 *获取年龄
-	 */
-    	public Integer getAge(){
-		return age;
-	}
-	
-	/**
-	 *设置年龄
-	 */
-	public void setAge(Integer age){
-		this.age = age;
-	}
-	/**
-	 *获取行业ID
-	 */
-    	public String getJobsId(){
-		return jobsId;
-	}
-	
-	/**
-	 *设置行业ID
-	 */
-	public void setJobsId(String jobsId){
-		this.jobsId = jobsId;
-	}
-	/**
-	 *获取健康状态
-	 */
-    	public String getHealthStatus(){
-		return healthStatus;
-	}
-	
-	/**
-	 *设置健康状态
-	 */
-	public void setHealthStatus(String healthStatus){
-		this.healthStatus = healthStatus;
-	}
-	/**
-	 *获取身份证附件
-	 */
-    	public String getCardFiles(){
-		return cardFiles;
-	}
-	
-	/**
-	 *设置身份证附件
-	 */
-	public void setCardFiles(String cardFiles){
-		this.cardFiles = cardFiles;
-	}
-	/**
-	 *获取状态
-	 */
-    	public String getStatus(){
-		return status;
-	}
-	
-	/**
-	 *设置状态
-	 */
-	public void setStatus(String status){
-		this.status = status;
-	}
-	/**
-	 *获取创建人
-	 */
-    	public String getCreateBy(){
-		return createBy;
-	}
-	
-	/**
-	 *设置创建人
-	 */
-	public void setCreateBy(String createBy){
-		this.createBy = createBy;
-	}
-	/**
-	 *获取创建时间
-	 */
-    	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-	@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
-		public Date getCreateTime(){
-		return createTime;
-	}
-	
-	/**
-	 *设置创建时间
-	 */
-	public void setCreateTime(Date createTime){
-		this.createTime = createTime;
-	}
-	/**
-	 *获取更新人
-	 */
-    	public String getUpdateBy(){
-		return updateBy;
-	}
-	
-	/**
-	 *设置更新人
-	 */
-	public void setUpdateBy(String updateBy){
-		this.updateBy = updateBy;
-	}
-	/**
-	 *获取更新时间
-	 */
-    	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-	@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
-		public Date getUpdateTime(){
-		return updateTime;
-	}
-	
-	/**
-	 *设置更新时间
-	 */
-	public void setUpdateTime(Date updateTime){
-		this.updateTime = updateTime;
-	}
-	/**
-	 *获取是否删除
-	 */
-    	public Boolean getDelFlag(){
-		return delFlag;
-	}
-	
-	/**
-	 *设置是否删除
-	 */
-	public void setDelFlag(Boolean delFlag){
-		this.delFlag = delFlag;
-	}
 }

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

+ 48 - 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 = "投保人姓名")
@@ -32,6 +34,10 @@ public class InsuranceApplication {
 	private String businessScope;
     @ApiModelProperty(value = "行业类型")
 	private String industryType;
+    @ApiModelProperty(value = "联系电话")
+	private String tel;
+    @ApiModelProperty(value = "邮编")
+	private String postal;
     @ApiModelProperty(value = "雇员人数")
 	private Integer employeesNumber;
     @ApiModelProperty(value = "已投保人数")
@@ -178,6 +184,32 @@ public class InsuranceApplication {
 	public void setIndustryType(String industryType){
 		this.industryType = industryType;
 	}
+	/**
+	 *获取联系电话
+	 */
+    	public String getTel(){
+		return tel;
+	}
+	
+	/**
+	 *设置联系电话
+	 */
+	public void setTel(String tel){
+		this.tel = tel;
+	}
+	/**
+	 *获取邮编
+	 */
+    	public String getPostal(){
+		return postal;
+	}
+	
+	/**
+	 *设置邮编
+	 */
+	public void setPostal(String postal){
+		this.postal = postal;
+	}
 	/**
 	 *获取雇员人数
 	 */
@@ -233,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;
 	}
@@ -248,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;
 	}
@@ -368,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;
+	}
 }

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

@@ -1,330 +1,328 @@
 package com.jpsoft.picc.modules.business.entity;
 
+import java.io.Serializable;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.math.BigDecimal;
-import java.util.Date;
+import io.swagger.annotations.ApiModel;
 
 /**
- * 描述:business_insurance_policy的实体类
+ 描述:business_insurance_policy的实体类
  */
 @ApiModel(value = "business_insurance_policy的实体类")
 public class InsurancePolicy {
+    @ApiModelProperty(value = "编号")
     private String id;
+    @ApiModelProperty(value = "状态:待制单50/待出单60/已出单70")
     private String status;
+    @ApiModelProperty(value = "流程审核状态:正常/回退等")
     private String processStatus;
+    @ApiModelProperty(value = "保险费合计(总金额)")
     private BigDecimal insuranceFee;
+    @ApiModelProperty(value = "开始时间")
     private Date startTime;
+    @ApiModelProperty(value = "结束时间")
     private Date endTime;
+    @ApiModelProperty(value = "人数")
     private Integer number;
+    @ApiModelProperty(value = "入账银行")
     private String accountBank;
+    @ApiModelProperty(value = "出账银行")
     private String issuingBank;
+    @ApiModelProperty(value = "单号")
     private String singlNumber;
+    @ApiModelProperty(value = "转账时间")
     private Date transferTime;
+    @ApiModelProperty(value = "保险代理人")
     private String agentId;
+    @ApiModelProperty(value = "投保单附件")
     private String insurancePolicyFile;
+    @ApiModelProperty(value = "当前第几份")
     private Integer no;
+    @ApiModelProperty(value = "生效年月(yyyyMM)")
+    private String effectiveDate;
+    @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;
 
     /**
-     * 获取编号
+     *获取编号
      */
-    @ApiModelProperty(value = "编号")
-    public String getId() {
+    public String getId(){
         return id;
     }
 
     /**
-     * 设置编号
+     *设置编号
      */
-    public void setId(String id) {
+    public void setId(String id){
         this.id = id;
     }
-
     /**
-     * 获取状态:待制单50/待出单60/已出单70
+     *获取状态:待制单50/待出单60/已出单70
      */
-    @ApiModelProperty(value = "状态:待制单50/待出单60/已出单70")
-    public String getStatus() {
+    public String getStatus(){
         return status;
     }
 
     /**
-     * 设置状态:待制单50/待出单60/已出单70
+     *设置状态:待制单50/待出单60/已出单70
      */
-    public void setStatus(String status) {
+    public void setStatus(String status){
         this.status = status;
     }
-
     /**
-     * 获取流程审核状态:正常/回退等
+     *获取流程审核状态:正常/回退等
      */
-    @ApiModelProperty(value = "流程审核状态:正常/回退等")
-    public String getProcessStatus() {
+    public String getProcessStatus(){
         return processStatus;
     }
 
     /**
-     * 设置流程审核状态:正常/回退等
+     *设置流程审核状态:正常/回退等
      */
-    public void setProcessStatus(String processStatus) {
+    public void setProcessStatus(String processStatus){
         this.processStatus = processStatus;
     }
-
     /**
-     * 获取保险费合计(总金额)
+     *获取保险费合计(总金额)
      */
-    @ApiModelProperty(value = "保险费合计(总金额)")
-    public BigDecimal getInsuranceFee() {
+    public BigDecimal getInsuranceFee(){
         return insuranceFee;
     }
 
     /**
-     * 设置保险费合计(总金额)
+     *设置保险费合计(总金额)
      */
-    public void setInsuranceFee(BigDecimal insuranceFee) {
+    public void setInsuranceFee(BigDecimal insuranceFee){
         this.insuranceFee = insuranceFee;
     }
-
     /**
-     * 获取开始时间
+     *获取开始时间
      */
-    @ApiModelProperty(value = "开始时间")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
-    public Date getStartTime() {
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
+    public Date getStartTime(){
         return startTime;
     }
 
     /**
-     * 设置开始时间
+     *设置开始时间
      */
-    public void setStartTime(Date startTime) {
+    public void setStartTime(Date startTime){
         this.startTime = startTime;
     }
-
     /**
-     * 获取结束时间
+     *获取结束时间
      */
-    @ApiModelProperty(value = "结束时间")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
-    public Date getEndTime() {
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
+    public Date getEndTime(){
         return endTime;
     }
 
     /**
-     * 设置结束时间
+     *设置结束时间
      */
-    public void setEndTime(Date endTime) {
+    public void setEndTime(Date endTime){
         this.endTime = endTime;
     }
-
     /**
-     * 获取人数
+     *获取人数
      */
-    @ApiModelProperty(value = "人数")
-    public Integer getNumber() {
+    public Integer getNumber(){
         return number;
     }
 
     /**
-     * 设置人数
+     *设置人数
      */
-    public void setNumber(Integer number) {
+    public void setNumber(Integer number){
         this.number = number;
     }
-
     /**
-     * 获取入账银行
+     *获取入账银行
      */
-    @ApiModelProperty(value = "入账银行")
-    public String getAccountBank() {
+    public String getAccountBank(){
         return accountBank;
     }
 
     /**
-     * 设置入账银行
+     *设置入账银行
      */
-    public void setAccountBank(String accountBank) {
+    public void setAccountBank(String accountBank){
         this.accountBank = accountBank;
     }
-
     /**
-     * 获取出账银行
+     *获取出账银行
      */
-    @ApiModelProperty(value = "出账银行")
-    public String getIssuingBank() {
+    public String getIssuingBank(){
         return issuingBank;
     }
 
     /**
-     * 设置出账银行
+     *设置出账银行
      */
-    public void setIssuingBank(String issuingBank) {
+    public void setIssuingBank(String issuingBank){
         this.issuingBank = issuingBank;
     }
-
     /**
-     * 获取单号
+     *获取单号
      */
-    @ApiModelProperty(value = "单号")
-    public String getSinglNumber() {
+    public String getSinglNumber(){
         return singlNumber;
     }
 
     /**
-     * 设置单号
+     *设置单号
      */
-    public void setSinglNumber(String singlNumber) {
+    public void setSinglNumber(String singlNumber){
         this.singlNumber = singlNumber;
     }
-
     /**
-     * 获取转账时间
+     *获取转账时间
      */
-    @ApiModelProperty(value = "转账时间")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
-    public Date getTransferTime() {
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+    public Date getTransferTime(){
         return transferTime;
     }
 
     /**
-     * 设置转账时间
+     *设置转账时间
      */
-    public void setTransferTime(Date transferTime) {
+    public void setTransferTime(Date transferTime){
         this.transferTime = transferTime;
     }
-
     /**
-     * 获取保险代理人
+     *获取保险代理人
      */
-    @ApiModelProperty(value = "保险代理人")
-    public String getAgentId() {
+    public String getAgentId(){
         return agentId;
     }
 
     /**
-     * 设置保险代理人
+     *设置保险代理人
      */
-    public void setAgentId(String agentId) {
+    public void setAgentId(String agentId){
         this.agentId = agentId;
     }
-
     /**
-     * 获取投保单附件
+     *获取投保单附件
      */
-    @ApiModelProperty(value = "投保单附件")
-    public String getInsurancePolicyFile() {
+    public String getInsurancePolicyFile(){
         return insurancePolicyFile;
     }
 
     /**
-     * 设置投保单附件
+     *设置投保单附件
      */
-    public void setInsurancePolicyFile(String insurancePolicyFile) {
+    public void setInsurancePolicyFile(String insurancePolicyFile){
         this.insurancePolicyFile = insurancePolicyFile;
     }
-
     /**
-     * 获取当前第几份
+     *获取当前第几份
      */
-    @ApiModelProperty(value = "当前第几份")
-    public Integer getNo() {
+    public Integer getNo(){
         return no;
     }
 
     /**
-     * 设置当前第几份
+     *设置当前第几份
      */
-    public void setNo(Integer no) {
+    public void setNo(Integer no){
         this.no = no;
     }
+    /**
+     *获取生效年月(yyyyMM)
+     */
+    public String getEffectiveDate(){
+        return effectiveDate;
+    }
 
     /**
-     * 获取是否删除
+     *设置生效年月(yyyyMM)
      */
-    @ApiModelProperty(value = "是否删除")
-    public Boolean getDelFlag() {
+    public void setEffectiveDate(String effectiveDate){
+        this.effectiveDate = effectiveDate;
+    }
+    /**
+     *获取是否删除
+     */
+    public Boolean getDelFlag(){
         return delFlag;
     }
 
     /**
-     * 设置是否删除
+     *设置是否删除
      */
-    public void setDelFlag(Boolean delFlag) {
+    public void setDelFlag(Boolean delFlag){
         this.delFlag = delFlag;
     }
-
     /**
-     * 获取创建人
+     *获取创建人
      */
-    @ApiModelProperty(value = "创建人")
-    public String getCreateBy() {
+    public String getCreateBy(){
         return createBy;
     }
 
     /**
-     * 设置创建人
+     *设置创建人
      */
-    public void setCreateBy(String createBy) {
+    public void setCreateBy(String createBy){
         this.createBy = createBy;
     }
-
     /**
-     * 获取创建时间
+     *获取创建时间
      */
-    @ApiModelProperty(value = "创建时间")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
-    public Date getCreateTime() {
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+    public Date getCreateTime(){
         return createTime;
     }
 
     /**
-     * 设置创建时间
+     *设置创建时间
      */
-    public void setCreateTime(Date createTime) {
+    public void setCreateTime(Date createTime){
         this.createTime = createTime;
     }
-
     /**
-     * 获取修改人
+     *获取修改人
      */
-    @ApiModelProperty(value = "修改人")
-    public String getUpdateBy() {
+    public String getUpdateBy(){
         return updateBy;
     }
 
     /**
-     * 设置修改人
+     *设置修改人
      */
-    public void setUpdateBy(String updateBy) {
+    public void setUpdateBy(String updateBy){
         this.updateBy = updateBy;
     }
-
     /**
-     * 获取修改时间
+     *获取修改时间
      */
-    @ApiModelProperty(value = "修改时间")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
-    public Date getUpdateTime() {
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+    public Date getUpdateTime(){
         return updateTime;
     }
 
     /**
-     * 设置修改时间
+     *设置修改时间
      */
-    public void setUpdateTime(Date updateTime) {
+    public void setUpdateTime(Date updateTime){
         this.updateTime = updateTime;
     }
 }

+ 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() {

+ 27 - 6
picc-common/src/main/resources/mapper/base/CompanyMember.xml

@@ -12,6 +12,7 @@
 			<result property="sex" column="sex_" />
 			<result property="age" column="age_" />
 			<result property="jobsId" column="jobs_id" />
+			<result property="jobName" column="job_name" />
 			<result property="healthStatus" column="health_status" />
 			<result property="cardFiles" column="card_files" />
 			<result property="status" column="status_" />
@@ -106,29 +107,49 @@
 	where id_=#{id}
 	</update>
 	<select id="get" parameterType="string" resultMap="CompanyMemberMap">
-		select 
-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		from base_company_member where id_=#{0}
+		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.id_=#{0}
 	</select>
 	<select id="exist" parameterType="string" resultType="int">
-		select count(*) from base_company_member where id_=#{0}
+		select count(*) from base_company_member t1 where t1.id_=#{0}
 	</select>
 	<select id="list" resultMap="CompanyMemberMap">
-		select * from base_company_member
+		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[
-			select * from base_company_member
+			select * from (
+				select t1.*,t2.name_ as job_name from base_company_member t1
+				left join base_jobs t2 on t1.jobs_id=t2.id_
+			) as t
 		]]>
 		<where>
 			<if test="searchParams.id != null">
 				and ID_ like #{searchParams.id}
 			</if>
 			<if test="searchParams.companyId != null">
-				and company_id like #{searchParams.companyId}
+				and company_id = #{searchParams.companyId}
+			</if>
+			<if test="searchParams.memberName != null">
+				and name_ like #{searchParams.memberName}
+			</if>
+			<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>

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

@@ -83,7 +83,7 @@ id_,name_,insurance_description,clause_,status_,del_flag,create_by,create_time,u
 		select count(*) from base_insurance_definition where id_=#{0}
 	</select>
 	<select id="list" resultMap="InsuranceDefinitionMap">
-		select * from base_insurance_definition where del_flag=false
+		select * from base_insurance_definition where del_flag=0
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="InsuranceDefinitionMap">
 		<![CDATA[

+ 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[

+ 5 - 2
picc-common/src/main/resources/mapper/base/InsuranceJobs.xml

@@ -94,8 +94,11 @@ id_,jobs_id,definition_id,charges_,del_flag,create_by,create_time,update_by,upda
 		]]>
 		<where>
 			and del_flag = false
-			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+			<if test="searchParams.jobsId != null">
+				and jobs_id like #{searchParams.jobsId}
+			</if>
+			<if test="searchParams.definitionId != null">
+				and definition_id like #{searchParams.definitionId}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">

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

@@ -78,7 +78,7 @@ id_,name_,content_,status_,del_flag,create_by,create_time,update_by,update_time
 		select count(*) from base_jobs where id_=#{0}
 	</select>
 	<select id="list" resultMap="JobsMap">
-		select * from base_jobs where del_flag = false
+		select * from base_jobs where del_flag = 0
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="JobsMap">
 		<![CDATA[

+ 13 - 5
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}
@@ -52,15 +51,24 @@ id_,application_id,policy_id		from business_application_policy where id_=#{0}
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="ApplicationPolicyMap">
 		<![CDATA[
-			select * from business_application_policy
+			SELECT a.* FROM business_application_policy a LEFT JOIN business_insurance_policy b ON a.policy_id = b.id_
 		]]>
 		<where>
-			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+			<if test="searchParams.applicationId != null">
+				and a.application_id like #{searchParams.applicationId}
+			</if>
+			<if test="searchParams.policyId != null">
+				and a.policy_id like #{searchParams.policyId}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">
 	        ${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>

+ 179 - 148
picc-common/src/main/resources/mapper/business/InsuranceApplication.xml

@@ -1,166 +1,197 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
 <mapper namespace="com.jpsoft.picc.modules.business.dao.InsuranceApplicationDAO">
-	<resultMap id="InsuranceApplicationMap" type="com.jpsoft.picc.modules.business.entity.InsuranceApplication">
-		<id property="id" column="id_" />
-			<result property="companyId" column="company_id" />
-			<result property="definitionId" column="definition_id" />
-			<result property="insuredName" column="insured_name" />
-			<result property="insuredTel" column="insured_tel" />
-			<result property="companyName" column="company_name" />
-			<result property="usccCode" column="uscc_code" />
-			<result property="businessScope" column="business_scope" />
-			<result property="industryType" column="industry_type" />
-			<result property="employeesNumber" column="employees_number" />
-			<result property="insuredNumber" column="insured_number" />
-			<result property="companyAddress" column="company_address" />
-			<result property="lossInRecentYears" column="loss_in_recent_years" />
-			<result property="startTime" column="start_time" />
-			<result property="endTime" column="end_time" />
-			<result property="insuranceFee" column="insurance_fee" />
-			<result property="status" column="status_" />
-			<result property="processStatus" column="process_status" />
-			<result property="createBy" column="create_by" />
-			<result property="createTime" column="create_time" />
-			<result property="updateBy" column="update_by" />
-			<result property="updateTime" column="update_time" />
-			<result property="delFlag" column="del_flag" />
-			</resultMap>
-	<insert id="insert" parameterType="com.jpsoft.picc.modules.business.entity.InsuranceApplication">
-	<!--
-	<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
-		select sys_guid() from dual
-	</selectKey>
-	-->
-	<![CDATA[
+    <resultMap id="InsuranceApplicationMap" type="com.jpsoft.picc.modules.business.entity.InsuranceApplication">
+        <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"/>
+        <result property="usccCode" column="uscc_code"/>
+        <result property="businessScope" column="business_scope"/>
+        <result property="industryType" column="industry_type"/>
+        <result property="tel" column="tel_"/>
+        <result property="postal" column="postal_"/>
+        <result property="employeesNumber" column="employees_number"/>
+        <result property="insuredNumber" column="insured_number"/>
+        <result property="companyAddress" column="company_address"/>
+        <result property="lossInRecentYears" column="loss_in_recent_years"/>
+        <result property="startTime" column="start_time"/>
+        <result property="endTime" column="end_time"/>
+        <result property="insuranceFee" column="insurance_fee"/>
+        <result property="status" column="status_"/>
+        <result property="processStatus" column="process_status"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="delFlag" column="del_flag"/>
+    </resultMap>
+    <insert id="insert" parameterType="com.jpsoft.picc.modules.business.entity.InsuranceApplication">
+        <!--
+        <selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
+            select sys_guid() from dual
+        </selectKey>
+        -->
+        <![CDATA[
 		insert into business_insurance_application
-	    (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)
+	    (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}
-			,#{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>
-	<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>
+    </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="tel!=null">
+                tel_=#{tel,jdbcType=VARCHAR},
+            </if>
+            <if test="postal!=null">
+                postal_=#{postal,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}
+		select count(*) from business_insurance_application where id_=#{0} and del_flag = false
 	</select>
 	<select id="list" resultMap="InsuranceApplicationMap">
-		select * from business_insurance_application
+		select * from business_insurance_application where del_flag = false
 	</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>
-		</where>
-		<foreach item="sort" collection="sortList"  open="order by" separator=",">
-	        ${sort.name} ${sort.order}
-	 	</foreach>
-	</select>
+        <where>
+            del_flag=0
+            <if test="searchParams.companyId != null">
+                and company_id = #{searchParams.companyId}
+            </if>
+            <if test="searchParams.status != null">
+                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=",">
+            ${sort.name} ${sort.order}
+        </foreach>
+    </select>
 </mapper>

+ 26 - 22
picc-common/src/main/resources/mapper/business/InsurancePolicy.xml

@@ -18,6 +18,7 @@
         <result property="agentId" column="agent_id" />
         <result property="insurancePolicyFile" column="insurance_policy_file" />
         <result property="no" column="no_" />
+        <result property="effectiveDate" column="effective_date" />
         <result property="delFlag" column="del_flag" />
         <result property="createBy" column="create_by" />
         <result property="createTime" column="create_time" />
@@ -32,28 +33,29 @@
         -->
         <![CDATA[
 		insert into business_insurance_policy
-	    (id_,status_,process_status,insurance_fee,start_time,end_time,number_,account_bank,issuing_bank,singl_number,transfer_time,agent_id,insurance_policy_file,no_,del_flag,create_by,create_time,update_by,update_time)
+	    (id_,status_,process_status,insurance_fee,start_time,end_time,number_,account_bank,issuing_bank,singl_number,transfer_time,agent_id,insurance_policy_file,no_,effective_date,del_flag,create_by,create_time,update_by,update_time)
 		values
 		(
-#{id,jdbcType=VARCHAR}
-,#{status,jdbcType=VARCHAR}
-,#{processStatus,jdbcType=VARCHAR}
-,#{insuranceFee,jdbcType= NUMERIC }
-,#{startTime,jdbcType= TIMESTAMP }
-,#{endTime,jdbcType= TIMESTAMP }
-,#{number,jdbcType= NUMERIC }
-,#{accountBank,jdbcType=VARCHAR}
-,#{issuingBank,jdbcType=VARCHAR}
-,#{singlNumber,jdbcType=VARCHAR}
-,#{transferTime,jdbcType= TIMESTAMP }
-,#{agentId,jdbcType=VARCHAR}
-,#{insurancePolicyFile,jdbcType=VARCHAR}
-,#{no,jdbcType= NUMERIC }
-,#{delFlag,jdbcType= NUMERIC }
-,#{createBy,jdbcType=VARCHAR}
-,#{createTime,jdbcType= TIMESTAMP }
-,#{updateBy,jdbcType=VARCHAR}
-,#{updateTime,jdbcType= TIMESTAMP }
+            #{id,jdbcType=VARCHAR}
+            ,#{status,jdbcType=VARCHAR}
+            ,#{processStatus,jdbcType=VARCHAR}
+            ,#{insuranceFee,jdbcType= NUMERIC }
+            ,#{startTime,jdbcType= TIMESTAMP }
+            ,#{endTime,jdbcType= TIMESTAMP }
+            ,#{number,jdbcType= NUMERIC }
+            ,#{accountBank,jdbcType=VARCHAR}
+            ,#{issuingBank,jdbcType=VARCHAR}
+            ,#{singlNumber,jdbcType=VARCHAR}
+            ,#{transferTime,jdbcType= TIMESTAMP }
+            ,#{agentId,jdbcType=VARCHAR}
+            ,#{insurancePolicyFile,jdbcType=VARCHAR}
+            ,#{no,jdbcType= NUMERIC }
+            ,#{effectiveDate,jdbcType=VARCHAR}
+            ,#{delFlag,jdbcType= NUMERIC }
+            ,#{createBy,jdbcType=VARCHAR}
+            ,#{createTime,jdbcType= TIMESTAMP }
+            ,#{updateBy,jdbcType=VARCHAR}
+            ,#{updateTime,jdbcType= TIMESTAMP }
 		)
 	]]>
     </insert>
@@ -102,6 +104,9 @@
             <if test="no!=null">
                 no_=#{no,jdbcType= NUMERIC },
             </if>
+            <if test="effectiveDate!=null">
+                effective_date=#{effectiveDate,jdbcType=VARCHAR},
+            </if>
             <if test="delFlag!=null">
                 del_flag=#{delFlag,jdbcType= NUMERIC },
             </if>
@@ -121,8 +126,7 @@
         where id_=#{id}
     </update>
     <select id="get" parameterType="string" resultMap="InsurancePolicyMap">
-        select
-        id_,status_,process_status,insurance_fee,start_time,end_time,number_,account_bank,issuing_bank,singl_number,transfer_time,agent_id,insurance_policy_file,no_,del_flag,create_by,create_time,update_by,update_time		from business_insurance_policy where id_=#{0}
+        select * from business_insurance_policy where id_=#{0}
     </select>
     <select id="exist" parameterType="string" resultType="int">
         select count(*) from business_insurance_policy where id_=#{0} and del_flag = false

+ 12 - 5
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}
@@ -91,13 +90,21 @@ id_,policy_id,member_id,status_,is_add,del_flag,create_by,create_time,update_by,
 			select * from business_insurance_policy_member
 		]]>
 		<where>
-			and del_flag = false
-			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+			del_flag = false
+			<if test="searchParams.policyId != null">
+				and policy_id like #{searchParams.policyId}
+			</if>
+			<if test="searchParams.jobsId != null">
+				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>

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

@@ -88,8 +88,8 @@ id_,policy_id,opinion_,process_status,del_flag,create_by,create_time,update_by,u
 			select * from business_insurance_policy_record
 		]]>
 		<where>
-			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+			<if test="searchParams.policyId != null">
+				and policy_id like #{searchParams.policyId}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">

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

@@ -41,30 +41,36 @@ public class CompanyMemberController {
 
     @ApiOperation(value="读取企业人员列表")
     @RequestMapping(value = "list",method = RequestMethod.POST)
-    @ApiImplicitParams({
-//            @ApiImplicitParam(name = "companyId",value = "企业ID", required = true, paramType = "form",dataType = "String")
-    })
-    public MessageResult<Map> list(//@RequestParam(value="companyId",defaultValue="") String companyId,
+    public MessageResult<List<CompanyMember>> list(
                                    HttpServletRequest request){
         AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
         Company company = companyService.findByCreateBy(principal.getName());
 
-        MessageResult<Map> msgResult = new MessageResult<>();
+        MessageResult<List<CompanyMember>> msgResult = new MessageResult<>();
 
-        Map<String,Object> searchParams = new HashMap<>();
-        searchParams.put("delFlag",false);
+        try {
+            if (company==null){
+                throw new Exception("当前用户未填写企业信息!");
+            }
 
-        List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("id_","asc"));
+            Map<String, Object> searchParams = new HashMap<>();
+            searchParams.put("delFlag", false);
 
-        if (StringUtils.isNotEmpty(company.getId())) {
-            searchParams.put("companyId",company.getId());
-        }
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("create_time", "asc"));
 
-        Page<CompanyMember> page = companyMemberService.pageSearch(searchParams,1,1000,sortList);
+            searchParams.put("companyId", company.getId());
 
-        msgResult.setResult(true);
-        msgResult.setData(PojoUtils.pageWrapper(page));
+            Page<CompanyMember> page = companyMemberService.pageSearch(searchParams, 1, 1000, sortList);
+
+            msgResult.setResult(true);
+            msgResult.setData(page.getResult());
+        }
+        catch (Exception ex){
+            logger.error(ex.getMessage(),ex);
+            msgResult.setMessage(ex.getMessage());
+            msgResult.setResult(false);
+        }
 
         return msgResult;
     }
@@ -72,10 +78,12 @@ public class CompanyMemberController {
     @ApiOperation(value="读取企业人员分页列表")
     @RequestMapping(value = "pageList",method = RequestMethod.POST)
     @ApiImplicitParams({
-//            @ApiImplicitParam(name = "companyId",value = "企业ID", required = true, paramType = "form",dataType = "String")
+            @ApiImplicitParam(name = "memberName",value = "人员姓名", required = false, paramType = "form",dataType = "String"),
+            @ApiImplicitParam(name = "jobsId",value = "岗位编号", required = false, paramType = "form",dataType = "String")
     })
     public MessageResult<Map> pageList(
-//            @RequestParam(value="companyId",defaultValue="") String companyId,
+            @RequestParam(value="memberName",defaultValue="") String memberName,
+            @RequestParam(value="jobsId",defaultValue="") String jobsId,
             @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
             @RequestParam(value="pageSize",defaultValue="20") int pageSize,
             HttpServletRequest request){
@@ -84,20 +92,37 @@ public class CompanyMemberController {
 
         MessageResult<Map> msgResult = new MessageResult<>();
 
-        Map<String,Object> searchParams = new HashMap<>();
-        searchParams.put("delFlag",false);
+        try {
+            if (company == null) {
+                throw new Exception("当前用户未填写企业信息!");
+            }
+
+            Map<String, Object> searchParams = new HashMap<>();
+            searchParams.put("delFlag", false);
 
-        List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("id_","asc"));
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("create_time", "asc"));
 
-        if (StringUtils.isNotEmpty(company.getId())) {
-            searchParams.put("companyId",company.getId());
-        }
+            searchParams.put("companyId", company.getId());
 
-        Page<CompanyMember> page = companyMemberService.pageSearch(searchParams,pageIndex,pageSize,sortList);
+            if(StringUtils.isNotEmpty(jobsId)) {
+                searchParams.put("jobsId", jobsId);
+            }
 
-        msgResult.setResult(true);
-        msgResult.setData(PojoUtils.pageWrapper(page));
+            if(StringUtils.isNotEmpty(memberName)){
+                searchParams.put("memberName", "%" + memberName + "%");
+            }
+
+            Page<CompanyMember> page = companyMemberService.pageSearch(searchParams, pageIndex, pageSize, sortList);
+
+            msgResult.setResult(true);
+            msgResult.setData(PojoUtils.pageWrapper(page));
+        }
+        catch (Exception ex){
+            logger.error(ex.getMessage(),ex);
+            msgResult.setMessage(ex.getMessage());
+            msgResult.setResult(false);
+        }
 
         return msgResult;
     }
@@ -109,12 +134,11 @@ public class CompanyMemberController {
             @ApiImplicitParam(name = "name",value = "姓名", required = true, paramType = "form",dataType = "String"),
             @ApiImplicitParam(name = "cardType",value = "证件类型", required = true, paramType = "form",dataType = "String"),
             @ApiImplicitParam(name = "cardNo",value = "证件编号", required = true, paramType = "form",dataType = "String"),
-            @ApiImplicitParam(name = "sex",value = "性别", required = true, paramType = "form",dataType = "Boolean"),
+            @ApiImplicitParam(name = "sex",value = "性别(男:true,女:false)", required = true, paramType = "form",dataType = "Boolean"),
             @ApiImplicitParam(name = "age",value = "年龄", required = true, paramType = "form",dataType = "int"),
             @ApiImplicitParam(name = "jobsId",value = "行业ID", required = true, paramType = "form",dataType = "String"),
             @ApiImplicitParam(name = "healthStatus",value = "健康状态", required = true, paramType = "form",dataType = "String"),
-            @ApiImplicitParam(name = "cardFiles",value = "身份证件附件", required = false, paramType = "form",dataType = "String"),
-            @ApiImplicitParam(name = "status",value = "状态", required = true, paramType = "form",dataType = "String")
+            @ApiImplicitParam(name = "cardFiles",value = "身份证件附件", required = false, paramType = "form",dataType = "String")
     })
     public MessageResult<CompanyMember> add(//@RequestParam(value="companyId",defaultValue="") String companyId,
                                             @RequestParam(value="name",defaultValue="") String name,
@@ -125,7 +149,6 @@ public class CompanyMemberController {
                                             @RequestParam(value="jobsId",defaultValue="") String jobsId,
                                             @RequestParam(value="healthStatus",defaultValue="") String healthStatus,
                                             @RequestParam(value="cardFiles",defaultValue="") String cardFiles,
-                                            @RequestParam(value="status",defaultValue="") String status,
                                             HttpServletRequest request){
         AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
         Company company = companyService.findByCreateBy(principal.getName());
@@ -144,7 +167,7 @@ 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);
+//            if(StringUtils.isNotEmpty(status)) companyMember.setStatus(status);
             companyMember.setDelFlag(false);
             companyMember.setCreateBy(principal.getName());
             companyMember.setCreateTime(new Date());
@@ -170,11 +193,11 @@ public class CompanyMemberController {
     }
 
     @ApiOperation(value="获取企业人员")
-    @RequestMapping(value = "edit",method = RequestMethod.POST)
+    @RequestMapping(value = "detail",method = RequestMethod.POST)
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id",value = "编号", required = true, paramType = "form",dataType = "String")
     })
-    public MessageResult<CompanyMember> edit(@RequestParam(value="id",defaultValue="") String id){
+    public MessageResult<CompanyMember> detail(@RequestParam(value="id",defaultValue="") String id){
         MessageResult<CompanyMember> msgResult = new MessageResult<>();
 
         try {
@@ -202,16 +225,14 @@ public class CompanyMemberController {
     @PostMapping("update")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id",value = "编号", required = true, paramType = "form",dataType = "String"),
-//            @ApiImplicitParam(name = "companyId",value = "企业ID", required = true, paramType = "form",dataType = "String"),
             @ApiImplicitParam(name = "name",value = "姓名", required = true, paramType = "form",dataType = "String"),
             @ApiImplicitParam(name = "cardType",value = "证件类型", required = true, paramType = "form",dataType = "String"),
             @ApiImplicitParam(name = "cardNo",value = "证件编号", required = true, paramType = "form",dataType = "String"),
-            @ApiImplicitParam(name = "sex",value = "性别", required = true, paramType = "form",dataType = "Boolean"),
+            @ApiImplicitParam(name = "sex",value = "性别(男:true,女:false)", required = true, paramType = "form",dataType = "Boolean"),
             @ApiImplicitParam(name = "age",value = "年龄", required = true, paramType = "form",dataType = "int"),
             @ApiImplicitParam(name = "jobsId",value = "行业ID", required = true, paramType = "form",dataType = "String"),
             @ApiImplicitParam(name = "healthStatus",value = "健康状态", required = true, paramType = "form",dataType = "String"),
-            @ApiImplicitParam(name = "cardFiles",value = "身份证件附件", required = false, paramType = "form",dataType = "String"),
-            @ApiImplicitParam(name = "status",value = "状态", required = true, paramType = "form",dataType = "String")
+            @ApiImplicitParam(name = "cardFiles",value = "身份证件附件", required = false, paramType = "form",dataType = "String")
     })
     public MessageResult<CompanyMember> update(@RequestParam(value="id",defaultValue="") String id,
 //                                               @RequestParam(value="companyId",defaultValue="") String companyId,
@@ -223,7 +244,6 @@ public class CompanyMemberController {
                                                @RequestParam(value="jobsId",defaultValue="") String jobsId,
                                                @RequestParam(value="healthStatus",defaultValue="") String healthStatus,
                                                @RequestParam(value="cardFiles",defaultValue="") String cardFiles,
-                                               @RequestParam(value="status",defaultValue="") String status,
                                                HttpServletRequest request){
         AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
         Company company = companyService.findByCreateBy(principal.getName());
@@ -242,7 +262,7 @@ 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);
+//            if(StringUtils.isNotEmpty(status)) companyMember.setStatus(status);
             companyMember.setUpdateBy(principal.getName());
             companyMember.setUpdateTime(new Date());
 

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

@@ -1,16 +1,22 @@
 package com.jpsoft.picc.modules.auth.controller;
 
+import cn.hutool.core.date.DateUnit;
 import com.github.pagehelper.Page;
-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.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.*;
+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;
 import com.jpsoft.picc.modules.common.utils.PojoUtils;
@@ -20,15 +26,17 @@ 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.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
 import java.util.*;
 
 @Api(description="投保信息")
@@ -40,6 +48,9 @@ public class InsuranceApplicationController {
     @Autowired
     private InsuranceApplicationService insuranceApplicationService;
 
+    @Autowired
+    private InsurancePolicyService insurancePolicyService;
+
     @Autowired
     private InsuranceDefinitionService insuranceDefinitionService;
 
@@ -52,24 +63,58 @@ public class InsuranceApplicationController {
     @Autowired
     private CompanyService companyService;
 
+    @Autowired
+    private InsurancePolicyMemberService insurancePolicyMemberService;
+
+    @Autowired
+    private JobsService jobsService;
+
+    @Autowired
+    private ApplicationPolicyService applicationPolicyService;
+
     @ApiOperation(value="投保单列表")
     @RequestMapping(value = "pageList",method = RequestMethod.POST)
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "companyId",value = "企业ID", 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="companyId",defaultValue="") String companyId,
+            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){
+            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
+            HttpServletRequest request){
+        AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
+        Company company = companyService.findByCreateBy(principal.getName());
+
         MessageResult<Map> msgResult = new MessageResult<>();
 
         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 (StringUtils.isNotEmpty(companyId)) {
-            searchParams.put("companyId",companyId);
+        if (endTime!=null) {
+            searchParams.put("endTime",endTime);
         }
 
         Page<InsuranceApplication> page = insuranceApplicationService.pageSearch(searchParams,pageIndex,pageSize,sortList);
@@ -80,32 +125,78 @@ 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<Map<String,Object>> insureDetail(@RequestParam(value="id",defaultValue="") String id,
+    public MessageResult<InsuranceApplicationDTO> insureDetail(@RequestParam(value="applicationId",defaultValue="") String applicationId,
                                                           HttpServletRequest request){
+        MessageResult<InsuranceApplicationDTO> msgResult = new MessageResult<>();
+
         AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
         Company company = companyService.findByCreateBy(principal.getName());
 
-        MessageResult<Map<String,Object>> msgResult = new MessageResult<>();
-        Map<String,Object> objectMap = new HashMap<>();
+        if(company == null){
+            msgResult.setResult(false);
+            msgResult.setMessage("请先完善企业信息!");
+
+            return msgResult;
+        }
+
+        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 {
-                insuranceApplication = new InsuranceApplication();
+                //先生成主键,便于参保人员关联
+                insuranceApplicationDTO.setApplicationId(UUID.randomUUID().toString());
+
+                insuranceApplicationDTO.setCompanyId(company.getId());
+                insuranceApplicationDTO.setInsuredName(company.getName());
+                insuranceApplicationDTO.setInsuredTel(company.getTel());
+                insuranceApplicationDTO.setCompanyName(company.getName());
+                insuranceApplicationDTO.setBusinessNature(company.getBusinessNature());
+                insuranceApplicationDTO.setUsccCode(company.getUsccCode());
+                insuranceApplicationDTO.setBusinessScope(company.getBusinessScope());
+                insuranceApplicationDTO.setIndustryType(company.getIndustryType());
+                insuranceApplicationDTO.setEmployeesNumber(company.getEmployeesNumber());
+                insuranceApplicationDTO.setInsuredNumber(company.getInsuredNumber());
+                insuranceApplicationDTO.setTel(company.getTel());
+                insuranceApplicationDTO.setPostal(company.getPostal());
+                insuranceApplicationDTO.setCompanyAddress(company.getAddress());
+                insuranceApplicationDTO.setLossInRecentYears(company.getRemark());
+
             }
 
-            objectMap.put("insuranceApplication",insuranceApplication);
-            objectMap.put("company",company);
+            //读取每月投保单编号
+            List<ApplicationPolicy> relatePolicyList = applicationPolicyService.findByApplicationId(applicationId);
+
+            if (relatePolicyList.size()==0){
+                //生成首月投保编号
+                insuranceApplicationDTO.setPolicyId(UUID.randomUUID().toString());
+            }
+            else{
+                //首月投保
+                insuranceApplicationDTO.setPolicyId(relatePolicyList.get(0).getPolicyId());
+            }
 
-            msgResult.setData(objectMap);
+            msgResult.setData(insuranceApplicationDTO);
         }
         catch(Exception ex){
             logger.error(ex.getMessage(),ex);
@@ -117,33 +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 = "id",value = "编号", 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="id",defaultValue="") String id){
-        MessageResult<Map<String,Object>> msgResult = new MessageResult<>();
-        Map<String,Object> objectMap = new HashMap<>();
+    public MessageResult<AcceptInsuranceDTO> acceptDetail(@RequestParam(value="applicationId",defaultValue="") String applicationId,
+                                                          @RequestParam(value="policyId",defaultValue="") String policyId){
+        MessageResult<AcceptInsuranceDTO> msgResult = new MessageResult<>();
+        AcceptInsuranceDTO acceptInsuranceDTO = new AcceptInsuranceDTO();
 
         try {
-            InsuranceApplication insuranceApplication = insuranceApplicationService.get(id);
+            //投保单
+            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());
 
-            Page<InsuranceDefinitionLimit> insuranceDefinitionLimitPage = insuranceDefinitionLimitService.pageSearch(searchParams,1,100,sortList);
-            insuranceDefinition.setLimits(insuranceDefinitionLimitPage.getResult());
+            acceptInsuranceDTO.setInsuranceDefLimitList(insuranceDefinitionLimits);
+
+            //关联岗位
             Page<InsuranceJobs> insuranceJobsPage = insuranceJobsService.pageSearch(searchParams,1,100,sortList);
 
-            objectMap.put("insuranceDefinition",insuranceDefinition);
-            objectMap.put("insuranceJobs",insuranceJobsPage.getResult());
+            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();
+
+                insuranceJobsDTO.setJobs(jobs);
 
-            msgResult.setData(objectMap);
+                long memberCount = insurancePolicyMemberService.countByPolicyIdAndJobsId(policyId,insuranceJobs.getJobsId());
+
+                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);
+            }
+
+            acceptInsuranceDTO.setInsuranceJobsList(insuranceJobsList);
+            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);
@@ -158,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("20");
+            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);
         }
@@ -185,4 +357,106 @@ public class InsuranceApplicationController {
 
         return msgResult;
     }
+
+    @ApiOperation(value="保存草稿")
+    @RequestMapping(value = "saveDraft",method = RequestMethod.POST)
+    public MessageResult<InsuranceApplicationDTO> saveDraft(InsuranceApplicationDTO insuranceApplicationDTO,
+                                                        HttpServletRequest request
+    ){
+        AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
+//        Company company = companyService.findByCreateBy(principal.getName());
+
+        MessageResult<InsuranceApplicationDTO> msgResult = new MessageResult<>();
+        InsuranceApplication insuranceApplication = null;
+
+        try {
+            int affectCount = 0;
+
+            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 {
+                PojoUtils.map(insuranceApplicationDTO, insuranceApplication);
+
+                insuranceApplication.setEndTime(endTime.toDate());
+                insuranceApplication.setUpdateBy(principal.getName());
+                insuranceApplication.setUpdateTime(new Date());
+
+                affectCount = insuranceApplicationService.update(insuranceApplication);
+            }
+
+            if(affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(insuranceApplicationDTO);
+            }else {
+                msgResult.setResult(false);
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+
+    @ApiOperation(value="删除投保单")
+    @PostMapping("delete")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id",value = "编号", required = true, paramType = "form",dataType = "String")
+    })
+    public MessageResult<Integer> delete(@RequestParam(value="id",defaultValue="") String id,
+                                         HttpServletRequest request){
+        AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
+
+        MessageResult<Integer> msgResult = new MessageResult<>();
+
+        try {
+            InsuranceApplication insuranceApplication = insuranceApplicationService.get(id);
+            insuranceApplication.setDelFlag(true);
+            insuranceApplication.setUpdateBy(principal.getName());
+            insuranceApplication.setUpdateTime(new Date());
+
+            int affectCount = insuranceApplicationService.update(insuranceApplication);
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(affectCount);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("删除失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
 }

+ 6 - 9
picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/controller/InsuranceDefinitionController.java

@@ -10,6 +10,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -27,6 +28,7 @@ import java.util.Map;
 @Api(description="险种信息")
 @RestController
 @RequestMapping("/auth/insuranceDefinition")
+@Slf4j
 public class InsuranceDefinitionController {
     private Logger logger = LoggerFactory.getLogger(getClass());
 
@@ -35,18 +37,13 @@ public class InsuranceDefinitionController {
 
     @ApiOperation(value="所有险种列表")
     @RequestMapping(value = "list",method = RequestMethod.POST)
-    public MessageResult<Map> list(){
-        MessageResult<Map> msgResult = new MessageResult<>();
+    public MessageResult<List<InsuranceDefinition>> list(){
+        MessageResult<List<InsuranceDefinition>> msgResult = new MessageResult<>();
 
-        Map<String,Object> searchParams = new HashMap<>();
-
-        List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("id_","asc"));
-
-        Page<InsuranceDefinition> page = insuranceDefinitionService.pageSearch(searchParams,1,1000,sortList);
+        List<InsuranceDefinition> list = insuranceDefinitionService.list();
 
         msgResult.setResult(true);
-        msgResult.setData(PojoUtils.pageWrapper(page));
+        msgResult.setData(list);
 
         return msgResult;
     }

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

@@ -1,7 +1,13 @@
 package com.jpsoft.picc.modules.auth.controller;
 
 import com.github.pagehelper.Page;
+import com.jpsoft.picc.modules.base.entity.Company;
+import com.jpsoft.picc.modules.base.service.CompanyService;
+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.service.InsuranceApplicationService;
+import com.jpsoft.picc.modules.business.service.InsurancePolicyRecordService;
 import com.jpsoft.picc.modules.business.service.InsurancePolicyService;
 import com.jpsoft.picc.modules.common.dto.MessageResult;
 import com.jpsoft.picc.modules.common.dto.Sort;
@@ -11,6 +17,7 @@ import io.swagger.annotations.ApiImplicitParam;
 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.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,6 +26,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -33,6 +41,15 @@ public class InsurancePolicyController {
     @Autowired
     private InsurancePolicyService insurancePolicyService;
 
+    @Autowired
+    private InsurancePolicyRecordService insurancePolicyRecordService;
+
+    @Autowired
+    private CompanyService companyService;
+
+    @Autowired
+    private InsuranceApplicationService insuranceApplicationService;
+
     @ApiOperation(value="每月投保单列表")
     @RequestMapping(value = "pageList",method = RequestMethod.POST)
     @ApiImplicitParams({
@@ -119,4 +136,55 @@ public class InsurancePolicyController {
 
         return msgResult;
     }
+
+    @ApiOperation(value="投保历史记录")
+    @RequestMapping(value = "historyPageList",method = RequestMethod.POST)
+    public MessageResult<Map> historyPageList(
+            @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
+            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
+            HttpServletRequest request){
+        AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
+        Company company = companyService.findByCreateBy(principal.getName());
+
+        MessageResult<Map> msgResult = new MessageResult<>();
+
+        Map<String,Object> searchParams = new HashMap<>();
+        searchParams.put("status","70");
+
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("id_","asc"));
+
+        if (StringUtils.isNotEmpty(company.getId())) {
+            searchParams.put("companyId",company.getId());
+        }
+
+        Page<InsuranceApplication> page = insuranceApplicationService.pageSearch(searchParams,pageIndex,pageSize,sortList);
+
+        msgResult.setResult(true);
+        msgResult.setData(PojoUtils.pageWrapper(page));
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="查看退回理由")
+    @RequestMapping(value = "backReason",method = RequestMethod.POST)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "policyId",value = "每月投保单ID", required = true, paramType = "form",dataType = "String")
+    })
+    public MessageResult<List<InsurancePolicyRecord>> backReason(@RequestParam(value="policyId",defaultValue="") String policyId){
+        MessageResult<List<InsurancePolicyRecord>> msgResult = new MessageResult<>();
+
+        Map<String,Object> searchParams = new HashMap<>();
+        searchParams.put("policyId",policyId);
+
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("id_","asc"));
+
+        Page<InsurancePolicyRecord> page = insurancePolicyRecordService.pageSearch(searchParams,1,100,sortList);
+
+        msgResult.setResult(true);
+        msgResult.setData(page.getResult());
+
+        return msgResult;
+    }
 }

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

@@ -2,10 +2,18 @@ package com.jpsoft.picc.modules.auth.controller;
 
 import cn.hutool.core.convert.Convert;
 import com.github.pagehelper.Page;
+import com.jpsoft.picc.modules.base.entity.Company;
 import com.jpsoft.picc.modules.base.entity.CompanyMember;
 import com.jpsoft.picc.modules.base.service.CompanyMemberService;
+import com.jpsoft.picc.modules.base.service.CompanyService;
+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.dto.MessageResult;
 import com.jpsoft.picc.modules.common.dto.Sort;
 import com.jpsoft.picc.modules.common.utils.POIUtils;
@@ -23,6 +31,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 @Api(description="每月参保人员")
@@ -34,29 +43,71 @@ public class InsurancePolicyUserController {
     @Autowired
     private CompanyMemberService companyMemberService;
 
+    @Autowired
+    private CompanyService companyService;
+
     @Autowired
     private InsurancePolicyMemberService insurancePolicyMemberService;
 
-    @ApiOperation(value="读取参保人员分页列表")
+    @Autowired
+    private ApplicationPolicyService applicationPolicyService;
+
+    @Autowired
+    private InsuranceApplicationService insuranceApplicationService;
+
+    @Autowired
+    private InsurancePolicyService insurancePolicyService;
+
+    @ApiOperation(value="读取每月参保人员分页列表")
     @RequestMapping(value = "pageList",method = RequestMethod.POST)
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "PolicyId",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="PolicyId",defaultValue="") String PolicyId,
+            @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){
+            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
+            HttpServletRequest request){
+        AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
+        Company company = companyService.findByCreateBy(principal.getName());
+
         MessageResult<Map> msgResult = new MessageResult<>();
 
-        Map<String,Object> searchParams = new HashMap<>();
+        if (StringUtils.isNotEmpty(applicationId)) {
+            List<ApplicationPolicy> relatePolicyList = applicationPolicyService.findByApplicationId(applicationId);
 
-        List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("id_","asc"));
+            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 (StringUtils.isNotEmpty(PolicyId)) {
-            searchParams.put("PolicyId",PolicyId);
+                if (affectCount > 0) {
+                    policyId = insurancePolicy.getId();
+
+                    ApplicationPolicy applicationPolicy = new ApplicationPolicy();
+                    applicationPolicy.setId(UUID.randomUUID().toString());
+
+                    applicationPolicy.setApplicationId(applicationId);
+                    applicationPolicy.setPolicyId(policyId);
+
+                    applicationPolicyService.insert(applicationPolicy);
+                }
+            }
         }
 
+        List<Sort> sortList = new ArrayList<>();
+        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);
@@ -65,34 +116,74 @@ public class InsurancePolicyUserController {
         return msgResult;
     }
 
+    @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 = "memberId",value = "企业用户ID", required = true, paramType = "form",dataType = "String")
+            @ApiImplicitParam(name = "memberIds",value = "企业用户ID,用,分隔", required = true, paramType = "form",dataType = "String"),
     })
-    public MessageResult<InsurancePolicyMember> add(@RequestParam(value="policyId",defaultValue="") String policyId,
-                                                    @RequestParam(value="memberId",defaultValue="") String memberId,
+    public MessageResult<String> add(@RequestParam(value="policyId",defaultValue="") String policyId,
+                                                    @RequestParam(value="memberIds",defaultValue="") String memberIds,
                                                     HttpServletRequest request){
         AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
+        Company company = companyService.findByCreateBy(principal.getName());
 
-        MessageResult<InsurancePolicyMember> msgResult = new MessageResult<>();
-        InsurancePolicyMember insurancePolicyMember = new InsurancePolicyMember();
+        MessageResult<String> msgResult = new MessageResult<>();
 
         try {
-            insurancePolicyMember.setId(UUID.randomUUID().toString());
-            if(StringUtils.isNotEmpty(policyId)) insurancePolicyMember.setPolicyId(policyId);
-            if(StringUtils.isNotEmpty(memberId)) insurancePolicyMember.setMemberId(memberId);
-            insurancePolicyMember.setStatus("0");
-            insurancePolicyMember.setDelFlag(false);
-            insurancePolicyMember.setCreateBy(principal.getName());
-            insurancePolicyMember.setCreateTime(new Date());
+            int affectCount = 0;
+            String[] memberIdArr = memberIds.split(",");
 
-            int affectCount = insurancePolicyMemberService.insert(insurancePolicyMember);
+            for(String memberId : memberIdArr) {
+                InsurancePolicyMember insurancePolicyMember = new InsurancePolicyMember();
+
+                insurancePolicyMember.setId(UUID.randomUUID().toString());
+                insurancePolicyMember.setPolicyId(policyId);
+                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++;
+                }
+            }
 
             if (affectCount > 0) {
                 msgResult.setResult(true);
-                msgResult.setData(insurancePolicyMember);
+                msgResult.setData(policyId);
+                msgResult.setMessage("新增"+affectCount+"条数据。");
             } else {
                 msgResult.setResult(false);
                 msgResult.setMessage("数据库添加失败");
@@ -148,15 +239,15 @@ 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){
         AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
+        Company company = companyService.findByCreateBy(principal.getName());
 
         MessageResult<String> msgResult = new MessageResult<>();
         CompanyMember companyMember = new CompanyMember();
@@ -176,7 +267,7 @@ public class InsurancePolicyUserController {
                 String healthStatus = array[3].toString();
 
                 Map<String,Object> searchParams = new HashMap<>();
-                searchParams.put("companyId",companyId);
+                searchParams.put("companyId",company.getId());
                 searchParams.put("name",name);
                 searchParams.put("cardNo",cardNo);
                 List<Sort> sortList = new ArrayList<>();
@@ -186,7 +277,7 @@ public class InsurancePolicyUserController {
                     companyMember = page.get(0);
                 }else{
                     companyMember.setId(UUID.randomUUID().toString());
-                    if(StringUtils.isNotEmpty(companyId)) companyMember.setCompanyId(companyId);
+                    if(StringUtils.isNotEmpty(company.getId())) companyMember.setCompanyId(company.getId());
                     if (StringUtils.isNotEmpty(name)) companyMember.setName(name);
                     if (StringUtils.isNotEmpty(cardType)) companyMember.setCardType(cardType);
                     if (StringUtils.isNotEmpty(cardNo)) companyMember.setCardNo(cardNo);

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

@@ -0,0 +1,43 @@
+package com.jpsoft.picc.modules.auth.controller;
+
+import com.github.pagehelper.Page;
+import com.jpsoft.picc.modules.base.entity.InsuranceDefinition;
+import com.jpsoft.picc.modules.base.entity.Jobs;
+import com.jpsoft.picc.modules.base.service.JobsService;
+import com.jpsoft.picc.modules.common.dto.MessageResult;
+import com.jpsoft.picc.modules.common.dto.Sort;
+import com.jpsoft.picc.modules.common.utils.PojoUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Api(description="职业管理")
+@RestController
+@RequestMapping("/auth/jobs")
+@Slf4j
+public class JobsController {
+    @Autowired
+    private JobsService jobsService;
+
+    @ApiOperation(value="所有岗位列表")
+    @RequestMapping(value = "list",method = RequestMethod.POST)
+    public MessageResult<List<Jobs>> list(){
+        MessageResult<List<Jobs>> msgResult = new MessageResult<>();
+
+        List<Jobs> list = jobsService.list();
+
+        msgResult.setResult(true);
+        msgResult.setData(list);
+
+        return msgResult;
+    }
+}

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

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

@@ -0,0 +1,61 @@
+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;
+
+@Data
+@ApiModel(value = "企业信息")
+public class InsuranceApplicationDTO {
+    @ApiModelProperty(value = "投保单编号")
+    private String applicationId;
+    @ApiModelProperty(value = "企业ID")
+    private String companyId;
+    @ApiModelProperty(value = "保险种类")
+    private String definitionId;
+    @ApiModelProperty(value = "投保人姓名")
+    private String insuredName;
+    @ApiModelProperty(value = "联系电话")
+    private String insuredTel;
+    @ApiModelProperty(value = "企业名称")
+    private String companyName;
+    @ApiModelProperty(value = "营业性质")
+    private String businessNature;
+    @ApiModelProperty(value = "组织机构代码证")
+    private String usccCode;
+    @ApiModelProperty(value = "营业范围")
+    private String businessScope;
+    @ApiModelProperty(value = "行业类型")
+    private String industryType;
+    @ApiModelProperty(value = "联系电话")
+    private String tel;
+    @ApiModelProperty(value = "邮编")
+    private String postal;
+    @ApiModelProperty(value = "雇员人数")
+    private Integer employeesNumber;
+    @ApiModelProperty(value = "已投保人数")
+    private Integer insuredNumber;
+    @ApiModelProperty(value = "公司地址")
+    private String companyAddress;
+    @ApiModelProperty(value = "近三年损失情况")
+    private String lossInRecentYears;
+
+    @ApiModelProperty(value = "保障开始时间",required = true)
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
+    private Date startTime;
+
+    @ApiModelProperty(value = "保障月份数量",required = true)
+    private Integer monthNumber;
+    @ApiModelProperty(value = "状态:草稿10/待初审20/待复审30/待缴费40/待制单50/待出单60/已出单70/已过期100")
+    private String status;
+    @ApiModelProperty(value = "流程审核状态:正常/回退等")
+    private String processStatus;
+    @ApiModelProperty(value = "每月投保单编号")
+    private String policyId;
+}

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

@@ -0,0 +1,25 @@
+package com.jpsoft.picc.modules.auth.dto;
+
+import com.jpsoft.picc.modules.base.entity.InsuranceDefinition;
+import com.jpsoft.picc.modules.base.entity.Jobs;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "岗位及收费标准")
+public class InsuranceJobsDTO {
+    @ApiModelProperty(value = "岗位")
+    private Jobs jobs;
+    @ApiModelProperty(value = "收费标准(月)")
+    private BigDecimal charges;
+    @ApiModelProperty(value = "收费标准(年)")
+    private BigDecimal chargesY;
+    @ApiModelProperty(value = "投保人数")
+    private Integer number;
+    @ApiModelProperty(value = "保险费")
+    private BigDecimal money;
+}

+ 28 - 0
picc-enterprise-server/src/main/resources/application-remote.yml

@@ -0,0 +1,28 @@
+spring:
+  datasource:
+    url: jdbc:log4jdbc:mysql://10.100.145.22:3307/picc?autoReconnect=true&characterEncoding=utf8&serverTimezone=GMT%2B8
+    username: root
+    password: jpsoft
+  devtools:
+    restart:
+      enabled: true
+
+logger:
+  level: WARN
+  dir: C:\\picc\\logs\\picc-enterprise-server\\
+
+nginx:
+  port: 7070
+
+cas:
+  server-url-prefix: http://gyxm.jing-zhou.gov.cn/jp-cloud-cas
+  server-login-url: ${cas.server-url-prefix}/login
+  client-host-url: http://localhost:7070
+  # 如果不设则无法获取用户扩展信息
+  validation-type: cas
+
+springfox:
+  documentation:
+    swagger:
+      v2:
+        host: localhost:7070