Przeglądaj źródła

我的保单、理赔须知 接口

jz.kai 5 lat temu
rodzic
commit
fda07004c0

+ 14 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/base/entity/InsuranceDefinition.java

@@ -39,6 +39,8 @@ public class InsuranceDefinition {
 	@ApiModelProperty(value = "每月截止时间")
 	private String cutOffTime;
     private List<InsuranceDefinitionLimit> limits;
+	@ApiModelProperty(value = "理赔须知")
+	private String notice;
 
     /**
 	 *获取编号
@@ -203,5 +205,17 @@ public class InsuranceDefinition {
 		this.cutOffTime = cutOffTime;
 	}
 
+	/**
+	 *获取理赔须知
+	 */
+	public String getNotice(){
+		return notice;
+	}
 
+	/**
+	 *设置理赔须知
+	 */
+	public void setNotice(String notice){
+		this.notice = notice;
+	}
 }

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

@@ -32,4 +32,6 @@ public interface InsurancePolicyDAO {
     List<InsurancePolicy> findNextMonthPolicy(String companyId, String definitionId,Date startTime, Date endTime, String[] status);
 
     List<InsurancePolicy> toBeAdjustedPolicy(String effectiveDate,String status);
+
+    List<InsurancePolicy> mySearch(Map<String, Object> searchParams, List<Sort> sortList);
 }

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

@@ -33,4 +33,6 @@ public interface InsurancePolicyService {
     List<InsurancePolicy> toBeAdjustedPolicy(String effectiveDate,String status);
 
     void updatePolicyNumAndAmount(InsurancePolicy destPolicy, String subject);
+
+    Page<InsurancePolicy> myPageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, List<Sort> sortList);
 }

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

@@ -138,4 +138,13 @@ public class InsurancePolicyServiceImpl implements InsurancePolicyService {
 
         update(insurancePolicy);
     }
+
+    @Override
+    public Page<InsurancePolicy> myPageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize, List<Sort> sortList) {
+        Page<InsurancePolicy> page = PageHelper.startPage(pageNumber, pageSize).doSelectPage(() -> {
+            insurancePolicyDAO.mySearch(searchParams, sortList);
+        });
+
+        return page;
+    }
 }

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

@@ -15,6 +15,7 @@
 			<result property="updateBy" column="update_by" />
 			<result property="updateTime" column="update_time" />
 			<result property="cutOffTime" column="cut_off_time" />
+			<result property="notice" column="notice_" />
 			</resultMap>
 	<insert id="insert" parameterType="com.jpsoft.picc.modules.base.entity.InsuranceDefinition">
 	<!--
@@ -24,7 +25,7 @@
 	-->
 	<![CDATA[
 		insert into base_insurance_definition
-	    (id_,name_,insurance_description,clause_,status_,del_flag,create_by,create_time,update_by,update_time,cut_off_time)
+	    (id_,name_,insurance_description,clause_,status_,del_flag,create_by,create_time,update_by,update_time,cut_off_time,notice_)
 		values
 		(
 #{id,jdbcType=VARCHAR}
@@ -38,6 +39,7 @@
 ,#{updateBy,jdbcType=VARCHAR}
 ,#{updateTime,jdbcType= TIMESTAMP }
 ,#{cutOffTime,jdbcType= VARCHAR }
+,#{notice,jdbcType= VARCHAR }
 		)
 	]]>
 	</insert>
@@ -82,7 +84,7 @@
 	</update>
 	<select id="get" parameterType="string" resultMap="InsuranceDefinitionMap">
 		select 
-id_,name_,insurance_description,clause_,status_,del_flag,create_by,create_time,update_by,update_time,cut_off_time		from base_insurance_definition where id_=#{0}
+id_,name_,insurance_description,clause_,status_,del_flag,create_by,create_time,update_by,update_time,cut_off_time,notice_		from base_insurance_definition where id_=#{0}
 	</select>
 	<select id="exist" parameterType="string" resultType="int">
 		select count(*) from base_insurance_definition where id_=#{0}

+ 54 - 0
picc-common/src/main/resources/mapper/business/InsurancePolicy.xml

@@ -180,6 +180,9 @@
             <if test="searchParams.status != null">
                 and a.status_ = #{searchParams.status}
             </if>
+            <if test="searchParams.myStatus != null">
+                and (a.status_ = 70 or a.status_ = 100)
+            </if>
             <if test="searchParams.userType != null">
                 and (a.status_='30' or a.status_='60' or a.status_='70')
             </if>
@@ -193,6 +196,16 @@
 				and a.start_time <= #{searchParams.endTime}
 				]]>
             </if>
+            <if test="searchParams.startFinishTime != null">
+                <![CDATA[
+				and a.finish_time >= #{searchParams.startFinishTime}
+				]]>
+            </if>
+            <if test="searchParams.endFinishTime != null">
+                <![CDATA[
+				and a.finish_time <= #{searchParams.endFinishTime}
+				]]>
+            </if>
             <if test="searchParams.companyName != null">
                 and b.company_name = #{searchParams.companyName}
             </if>
@@ -267,4 +280,45 @@
         and effective_date = #{effectiveDate}
         and status_ = #{status}
     </select>
+    <select id="mySearch" parameterType="hashmap" resultMap="InsurancePolicyMap">
+        <![CDATA[
+			SELECT a.id_,a.singl_number,b.name_ AS definition_name,a.number_,a.start_time,a.end_time,a.create_time,a.finish_time,a.insurance_fee,a.status_ FROM business_insurance_policy a
+            LEFT JOIN base_insurance_definition b ON a.definition_id = b.id_
+		]]>
+        <where>
+            and a.del_flag = false
+            <if test="searchParams.definitionId != null">
+                and a.definition_id = #{searchParams.definitionId}
+            </if>
+            <if test="searchParams.status != null">
+                and a.status_ = #{searchParams.status}
+            </if>
+            <if test="searchParams.myStatus != null">
+                and (a.status_ = 70 or a.status_ = 100)
+            </if>
+            <if test="searchParams.startTime != null">
+                <![CDATA[
+				and a.create_time >= #{searchParams.startTime}
+				]]>
+            </if>
+            <if test="searchParams.endTime != null">
+                <![CDATA[
+				and a.create_time <= #{searchParams.endTime}
+				]]>
+            </if>
+            <if test="searchParams.startFinishTime != null">
+                <![CDATA[
+				and a.finish_time >= #{searchParams.startFinishTime}
+				]]>
+            </if>
+            <if test="searchParams.endFinishTime != null">
+                <![CDATA[
+				and a.finish_time <= #{searchParams.endFinishTime}
+				]]>
+            </if>
+        </where>
+        <foreach item="sort" collection="sortList"  open="order by" separator=",">
+            ${sort.name} ${sort.order}
+        </foreach>
+    </select>
 </mapper>

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

@@ -47,4 +47,33 @@ public class InsuranceDefinitionController {
 
         return msgResult;
     }
+
+    @ApiOperation(value="查看详情")
+    @RequestMapping(value = "detail",method = RequestMethod.POST)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id",value = "编号", required = true, paramType = "form",dataType = "String"),
+    })
+    public MessageResult<InsuranceDefinition> detail(String id){
+        MessageResult<InsuranceDefinition> msgResult = new MessageResult<>();
+
+        try {
+            InsuranceDefinition insuranceDefinition = insuranceDefinitionService.get(id);
+
+            if(insuranceDefinition != null) {
+                msgResult.setData(insuranceDefinition);
+                msgResult.setResult(true);
+            }else {
+                msgResult.setResult(false);
+                msgResult.setMessage("数据库不存在该记录!");
+            }
+        }
+        catch(Exception ex){
+            log.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
 }

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

@@ -9,9 +9,11 @@ import com.jpsoft.picc.modules.base.entity.*;
 import com.jpsoft.picc.modules.base.service.*;
 import com.jpsoft.picc.modules.business.entity.*;
 import com.jpsoft.picc.modules.business.service.*;
+import com.jpsoft.picc.modules.common.config.OSSConfig;
 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.OSSUtil;
 import com.jpsoft.picc.modules.common.utils.PojoUtils;
 import com.jpsoft.picc.modules.sys.entity.User;
 import com.jpsoft.picc.modules.sys.service.DataDictionaryService;
@@ -22,6 +24,10 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.jasig.cas.client.authentication.AttributePrincipal;
 import org.joda.time.DateTime;
 import org.joda.time.Interval;
@@ -33,6 +39,8 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -42,6 +50,8 @@ import java.util.*;
 @RestController
 @RequestMapping("/auth/insurancePolicy")
 public class InsurancePolicyController {
+    @Autowired
+    private OSSConfig ossConfig;
     @Autowired
     private InsurancePolicyService insurancePolicyService;
 
@@ -754,4 +764,229 @@ public class InsurancePolicyController {
 
         return messageResult;
     }
+
+    @ApiOperation(value="我的保单-分页列表")
+    @RequestMapping(value = "pageListMyPolicy",method = RequestMethod.POST)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "status",value = "状态:已出单70/已过期100", required = false, 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"),
+            @ApiImplicitParam(name = "startFinishTime",value = "出单起始时间", required = false, paramType = "form",dataType = "String"),
+            @ApiImplicitParam(name = "endFinishTime",value = "出单结束时间", required = false, paramType = "form",dataType = "String")
+    })
+    public MessageResult<Map> pageListMyPolicy(
+            String status,String definitionId,
+            @DateTimeFormat(pattern = "yyyy-MM-dd") Date startTime,
+            @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime,
+            @DateTimeFormat(pattern = "yyyy-MM-dd") Date startFinishTime,
+            @DateTimeFormat(pattern = "yyyy-MM-dd") Date endFinishTime,
+            @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
+            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
+            HttpServletRequest request){
+        MessageResult<Map> msgResult = new MessageResult<>();
+
+        try {
+            AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
+            CompanyUser companyUser = companyUserService.findByUserName(principal.getName());
+            Company company = null;
+
+            if (companyUser!=null && StringUtils.isNotEmpty(companyUser.getCompanyId())) {
+                company = companyService.get(companyUser.getCompanyId());
+            }
+
+            if (company==null){
+                throw new Exception("请先填写企业信息!");
+            }
+
+            Map<String, Object> searchParams = new HashMap<>();
+
+            List<Sort> sortList = new ArrayList<>();
+            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);
+            }else{
+                searchParams.put("myStatus", "true");
+            }
+
+            if (startTime != null) {
+                searchParams.put("startTime", startTime);
+            }
+
+            if (endTime != null) {
+                searchParams.put("endTime", endTime);
+            }
+
+            if (startFinishTime != null) {
+                searchParams.put("startFinishTime", startFinishTime);
+            }
+
+            if (endFinishTime != null) {
+                searchParams.put("endFinishTime", endFinishTime);
+            }
+
+            Page<InsurancePolicy> page = insurancePolicyService.myPageSearch(searchParams, pageIndex, pageSize,sortList);
+
+            msgResult.setData(PojoUtils.pageWrapper(page));
+            msgResult.setResult(true);
+        }
+        catch(Exception ex){
+            log.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+    @ApiOperation(value="导出")
+    @PostMapping("exportXls")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "status",value = "状态:已出单70/已过期100", required = false, 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"),
+            @ApiImplicitParam(name = "startFinishTime",value = "出单起始时间", required = false, paramType = "form",dataType = "String"),
+            @ApiImplicitParam(name = "endFinishTime",value = "出单结束时间", required = false, paramType = "form",dataType = "String")
+    })
+    public MessageResult<String> exportXls(String status,String definitionId,
+                                           @DateTimeFormat(pattern = "yyyy-MM-dd") Date startTime,
+                                           @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime,
+                                           @DateTimeFormat(pattern = "yyyy-MM-dd") Date startFinishTime,
+                                           @DateTimeFormat(pattern = "yyyy-MM-dd") Date endFinishTime,
+                                           HttpServletRequest request){
+        MessageResult<String> msgResult = new MessageResult<>();
+
+        try {
+            HSSFWorkbook workbook = new HSSFWorkbook();
+            HSSFSheet sheet = workbook.createSheet();
+            //表头
+            HSSFRow rowTitle = sheet.createRow(0);
+            HSSFCell cellTitle1 = rowTitle.createCell(0);
+            cellTitle1.setCellValue("序号");
+            HSSFCell cellTitle2 = rowTitle.createCell(1);
+            cellTitle2.setCellValue("投保单号");
+            HSSFCell cellTitle3 = rowTitle.createCell(2);
+            cellTitle3.setCellValue("投保险种");
+            HSSFCell cellTitle4 = rowTitle.createCell(3);
+            cellTitle4.setCellValue("投保人数");
+            HSSFCell cellTitle5 = rowTitle.createCell(4);
+            cellTitle5.setCellValue("投保期间");
+            HSSFCell cellTitle6 = rowTitle.createCell(5);
+            cellTitle6.setCellValue("创建时间");
+            HSSFCell cellTitle7 = rowTitle.createCell(6);
+            cellTitle7.setCellValue("出单时间");
+            HSSFCell cellTitle8 = rowTitle.createCell(7);
+            cellTitle8.setCellValue("保单金额");
+            HSSFCell cellTitle9 = rowTitle.createCell(8);
+            cellTitle9.setCellValue("保单状态");
+
+            //内容-获取数据
+            AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
+            CompanyUser companyUser = companyUserService.findByUserName(principal.getName());
+            Company company = null;
+
+            if (companyUser!=null && StringUtils.isNotEmpty(companyUser.getCompanyId())) {
+                company = companyService.get(companyUser.getCompanyId());
+            }
+
+            if (company==null){
+                throw new Exception("请先填写企业信息!");
+            }
+
+            Map<String, Object> searchParams = new HashMap<>();
+
+            List<Sort> sortList = new ArrayList<>();
+            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);
+            }else{
+                searchParams.put("myStatus", "true");
+            }
+
+            if (startTime != null) {
+                searchParams.put("startTime", startTime);
+            }
+
+            if (endTime != null) {
+                searchParams.put("endTime", endTime);
+            }
+
+            if (startFinishTime != null) {
+                searchParams.put("startFinishTime", startFinishTime);
+            }
+
+            if (endFinishTime != null) {
+                searchParams.put("endFinishTime", endFinishTime);
+            }
+
+            Page<InsurancePolicy> page = insurancePolicyService.myPageSearch(searchParams, 1, 1000,sortList);
+
+            //内容-写入数据
+            for(int i=0;i<page.size();i++){
+                InsurancePolicy insurancePolicy = page.get(i);
+
+                HSSFRow rowContent = sheet.createRow(i + 1);
+                HSSFCell cellContent1 = rowContent.createCell(0);
+                cellContent1.setCellValue(i+1);
+                HSSFCell cellContent2 = rowContent.createCell(1);
+                if(insurancePolicy.getSinglNumber() != null) cellContent2.setCellValue(insurancePolicy.getSinglNumber());
+                HSSFCell cellContent3 = rowContent.createCell(2);
+                if(insurancePolicy.getDefinitionName() != null) cellContent3.setCellValue(insurancePolicy.getDefinitionName());
+                HSSFCell cellContent4 = rowContent.createCell(3);
+                if(insurancePolicy.getNumber() != null) cellContent4.setCellValue(insurancePolicy.getNumber());
+                HSSFCell cellContent5 = rowContent.createCell(4);
+                if(insurancePolicy.getStartTime() != null && insurancePolicy.getEndTime() != null) cellContent5.setCellValue(insurancePolicy.getStartTime() + " - " + insurancePolicy.getEndTime());
+                HSSFCell cellContent6 = rowContent.createCell(5);
+                if(insurancePolicy.getCreateTime() != null) cellContent6.setCellValue(insurancePolicy.getCreateTime());
+                HSSFCell cellContent7 = rowContent.createCell(6);
+                if(insurancePolicy.getFinishTime() != null) cellContent7.setCellValue(insurancePolicy.getFinishTime());
+                HSSFCell cellContent8 = rowContent.createCell(7);
+                if(insurancePolicy.getInsuranceFee() != null) cellContent8.setCellValue(insurancePolicy.getInsuranceFee().floatValue());
+                HSSFCell cellContent9 = rowContent.createCell(8);
+                if(insurancePolicy.getStatus() != null) cellContent9.setCellValue(insurancePolicy.getStatusN());
+            }
+
+            //todo 将wb保存到oss
+            ByteArrayOutputStream output = new ByteArrayOutputStream();
+            workbook.write(output);
+
+            byte[] buffer = output.toByteArray();
+            ByteArrayInputStream input = new ByteArrayInputStream(buffer);
+
+            String downloadUrl = OSSUtil.upload(ossConfig,"import","InsurancePolicy.xls",input);
+
+            //todo 返回导入失败报表下载链接
+
+            msgResult.setData(downloadUrl);
+            msgResult.setResult(true);
+        }
+        catch(Exception ex){
+            log.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
 }