package com.ydtech.modules.xxl.service.impl; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONObject; import com.ydtech.constants.enums.dict.InsOrderStatusEnum; import com.ydtech.core.page.HttpResult; import com.ydtech.modules.ins.model.InsOrder; import com.ydtech.modules.ins.model.guoren.InsOrderStatusResp; import com.ydtech.modules.order.components.ConfigureParametersComponents; import com.ydtech.modules.order.components.gouren.GuorenRequestApiComponent; import com.ydtech.modules.order.components.huatai.HuaTaiRequestApiComponents; import com.ydtech.modules.order.entity.api.guoren.constants.PlatformInterfaceCode; import com.ydtech.modules.order.entity.api.guoren.request.ApplicationDetailsRequest; import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequestHead; import com.ydtech.modules.order.entity.api.huatai.constants.HuaTaiSubmitCommon; import com.ydtech.modules.order.entity.api.huatai.request.HuaTaiSubmitStatusQueryRequest; import com.ydtech.modules.order.entity.api.huatai.response.HuaTaiSubmitStatusQueryResponse; import com.ydtech.modules.order.entity.config.HuaTaiConfigureParameters; import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution; import com.ydtech.modules.protocol.service.PtlAgreementAttributionService; import com.ydtech.modules.xxl.model.InsAreaCompany; import com.ydtech.modules.xxl.model.QueryStatusResult; import com.ydtech.modules.xxl.service.BaseQueryStatusService; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @Service @RequiredArgsConstructor public class HuaTaiQueryStatusService implements BaseQueryStatusService { private final ConfigureParametersComponents configureParametersComponents; private final HuaTaiRequestApiComponents huaTaiRequestApiComponents; private final PtlAgreementAttributionService ptlAgreementAttributionService; public HuaTaiSubmitStatusQueryResponse submitStatus(InsAreaCompany insAreaCompany, HuaTaiConfigureParameters huaTaiConfigureParameters, String operateType) { com.ydtech.modules.order.entity.InsAreaCompany insAreaCompanyParam = JSONObject.parseObject( JSONObject.toJSONString(insAreaCompany), com.ydtech.modules.order.entity.InsAreaCompany.class); HuaTaiSubmitStatusQueryRequest huaTaiSubmitStatusQueryRequest = new HuaTaiSubmitStatusQueryRequest(insAreaCompanyParam, huaTaiConfigureParameters, operateType); huaTaiSubmitStatusQueryRequest.setHead(new HuaTaiBaseRequestHead(huaTaiConfigureParameters)); HuaTaiSubmitStatusQueryResponse submitStatusQueryResponse = huaTaiRequestApiComponents.submitStatus(huaTaiSubmitStatusQueryRequest, HuaTaiSubmitStatusQueryResponse.class, huaTaiConfigureParameters.getInsuredCode()); return submitStatusQueryResponse; } private HuaTaiSubmitCommon getSubmitStatus(InsAreaCompany insAreaCompany, HuaTaiSubmitStatusQueryResponse submitStatusQueryResponse) { HuaTaiSubmitCommon huaTaiSubmitCommon = new HuaTaiSubmitCommon(); boolean haveJQFlag = false; boolean haveSYFlag = false; String jqStatus = ""; String syStatus = ""; StringBuffer jqNotion = new StringBuffer(); StringBuffer syNotion = new StringBuffer(); for (HuaTaiSubmitStatusQueryResponse.AppliResult appliResult : submitStatusQueryResponse.getAppliResult()) { if (org.apache.commons.lang3.StringUtils.isNotEmpty(insAreaCompany.getJqapplyno())) { haveJQFlag = true; if (insAreaCompany.getJqapplyno().equals(appliResult.getContractNo())) { jqStatus = appliResult.getUnderWriteFlag(); for (HuaTaiSubmitStatusQueryResponse.Notion notion : appliResult.getNotion()) { jqNotion.append(notion.getUWNotion() + ","); } } } if (org.apache.commons.lang3.StringUtils.isNotEmpty(insAreaCompany.getSyapplyno()) && insAreaCompany.getSyapplyno().equals(appliResult.getContractNo())) { haveSYFlag = true; syStatus = appliResult.getUnderWriteFlag(); for (HuaTaiSubmitStatusQueryResponse.Notion notion : appliResult.getNotion()) { syNotion.append(notion.getUWNotion() + ","); } } } /** * 0 初始状态默认值 * 1 已通过核保已实收 * 2 待修改 * 4 主动撤回(出单员撤回) * 6 下发修改(核保员下发) * 8 已通过核保未实收 * 9 待核保 */ String totalUnderWriteInd = ""; //同保交商 if (haveJQFlag && haveSYFlag) { //已通过核保未实收 if ("8".contains(jqStatus) && "8".contains(syStatus)) { totalUnderWriteInd = "8"; } else if ("1".contains(jqStatus) || "1".contains(syStatus)) { totalUnderWriteInd = "1"; } else if ("9".contains(jqStatus) || "9".contains(syStatus)) { totalUnderWriteInd = "9"; } else { totalUnderWriteInd = "6"; } } else {//单保交强或单保商业 String status = jqStatus; if (StringUtils.isNotEmpty(syStatus)) { status = syStatus; } if ("8".contains(status)) { totalUnderWriteInd = "8"; } else if ("1".contains(status)) { totalUnderWriteInd = "1"; } else if ("9".contains(status)) { totalUnderWriteInd = "9"; } else { totalUnderWriteInd = "6"; } } huaTaiSubmitCommon.setTotalUnderWriteInd(totalUnderWriteInd); huaTaiSubmitCommon.setNotion(jqNotion.toString() + syNotion.toString()); return huaTaiSubmitCommon; } /** * * @param insAreaCompany 业务订单 * @return */ @Override public QueryStatusResult queryStatus(InsAreaCompany insAreaCompany) { QueryStatusResult queryStatusResult = new QueryStatusResult(); queryStatusResult.setStatus(false); // 获取协议配置信息 // 1. 协议id获取配置实体 PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId()); if(ptlAgreementAttribution == null) { return queryStatusResult; } HuaTaiConfigureParameters huaTaiConfigureParameters = configureParametersComponents.toEntity(HuaTaiConfigureParameters.class, ptlAgreementAttribution); // 2. 组装请求体 HuaTaiSubmitStatusQueryResponse submitStatusQueryResponse = submitStatus(insAreaCompany, huaTaiConfigureParameters, "2"); HuaTaiSubmitCommon huaTaiSubmitCommon = getSubmitStatus(insAreaCompany, submitStatusQueryResponse); // 3. 通过返回核保状态修改状态 if ("1".equals(huaTaiSubmitCommon.getTotalUnderWriteInd())) {//已通过核保已实收 queryStatusResult.setStatus(true); queryStatusResult.setPayTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); } return queryStatusResult; } }