HuaTaiQueryStatusService.java 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package com.ydtech.modules.xxl.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
  5. import com.ydtech.core.page.HttpResult;
  6. import com.ydtech.modules.ins.model.InsOrder;
  7. import com.ydtech.modules.ins.model.guoren.InsOrderStatusResp;
  8. import com.ydtech.modules.order.components.ConfigureParametersComponents;
  9. import com.ydtech.modules.order.components.gouren.GuorenRequestApiComponent;
  10. import com.ydtech.modules.order.components.huatai.HuaTaiRequestApiComponents;
  11. import com.ydtech.modules.order.entity.api.guoren.constants.PlatformInterfaceCode;
  12. import com.ydtech.modules.order.entity.api.guoren.request.ApplicationDetailsRequest;
  13. import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequestHead;
  14. import com.ydtech.modules.order.entity.api.huatai.constants.HuaTaiSubmitCommon;
  15. import com.ydtech.modules.order.entity.api.huatai.request.HuaTaiSubmitStatusQueryRequest;
  16. import com.ydtech.modules.order.entity.api.huatai.response.HuaTaiSubmitStatusQueryResponse;
  17. import com.ydtech.modules.order.entity.config.HuaTaiConfigureParameters;
  18. import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
  19. import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
  20. import com.ydtech.modules.xxl.model.InsAreaCompany;
  21. import com.ydtech.modules.xxl.model.QueryStatusResult;
  22. import com.ydtech.modules.xxl.service.BaseQueryStatusService;
  23. import lombok.RequiredArgsConstructor;
  24. import org.apache.commons.lang3.StringUtils;
  25. import org.springframework.stereotype.Component;
  26. import org.springframework.stereotype.Service;
  27. import java.time.LocalDateTime;
  28. import java.time.format.DateTimeFormatter;
  29. @Service
  30. @RequiredArgsConstructor
  31. public class HuaTaiQueryStatusService implements BaseQueryStatusService {
  32. private final ConfigureParametersComponents configureParametersComponents;
  33. private final HuaTaiRequestApiComponents huaTaiRequestApiComponents;
  34. private final PtlAgreementAttributionService ptlAgreementAttributionService;
  35. public HuaTaiSubmitStatusQueryResponse submitStatus(InsAreaCompany insAreaCompany,
  36. HuaTaiConfigureParameters huaTaiConfigureParameters,
  37. String operateType) {
  38. com.ydtech.modules.order.entity.InsAreaCompany insAreaCompanyParam = JSONObject.parseObject(
  39. JSONObject.toJSONString(insAreaCompany),
  40. com.ydtech.modules.order.entity.InsAreaCompany.class);
  41. HuaTaiSubmitStatusQueryRequest huaTaiSubmitStatusQueryRequest =
  42. new HuaTaiSubmitStatusQueryRequest(insAreaCompanyParam,
  43. huaTaiConfigureParameters, operateType);
  44. huaTaiSubmitStatusQueryRequest.setHead(new HuaTaiBaseRequestHead(huaTaiConfigureParameters));
  45. HuaTaiSubmitStatusQueryResponse submitStatusQueryResponse =
  46. huaTaiRequestApiComponents.submitStatus(huaTaiSubmitStatusQueryRequest,
  47. HuaTaiSubmitStatusQueryResponse.class, huaTaiConfigureParameters.getInsuredCode());
  48. return submitStatusQueryResponse;
  49. }
  50. private HuaTaiSubmitCommon getSubmitStatus(InsAreaCompany insAreaCompany,
  51. HuaTaiSubmitStatusQueryResponse submitStatusQueryResponse) {
  52. HuaTaiSubmitCommon huaTaiSubmitCommon = new HuaTaiSubmitCommon();
  53. boolean haveJQFlag = false;
  54. boolean haveSYFlag = false;
  55. String jqStatus = "";
  56. String syStatus = "";
  57. StringBuffer jqNotion = new StringBuffer();
  58. StringBuffer syNotion = new StringBuffer();
  59. for (HuaTaiSubmitStatusQueryResponse.AppliResult appliResult : submitStatusQueryResponse.getAppliResult()) {
  60. if (org.apache.commons.lang3.StringUtils.isNotEmpty(insAreaCompany.getJqapplyno())) {
  61. haveJQFlag = true;
  62. if (insAreaCompany.getJqapplyno().equals(appliResult.getContractNo())) {
  63. jqStatus = appliResult.getUnderWriteFlag();
  64. for (HuaTaiSubmitStatusQueryResponse.Notion notion : appliResult.getNotion()) {
  65. jqNotion.append(notion.getUWNotion() + ",");
  66. }
  67. }
  68. }
  69. if (org.apache.commons.lang3.StringUtils.isNotEmpty(insAreaCompany.getSyapplyno()) && insAreaCompany.getSyapplyno().equals(appliResult.getContractNo())) {
  70. haveSYFlag = true;
  71. syStatus = appliResult.getUnderWriteFlag();
  72. for (HuaTaiSubmitStatusQueryResponse.Notion notion : appliResult.getNotion()) {
  73. syNotion.append(notion.getUWNotion() + ",");
  74. }
  75. }
  76. }
  77. /**
  78. * 0 初始状态默认值
  79. * 1 已通过核保已实收
  80. * 2 待修改
  81. * 4 主动撤回(出单员撤回)
  82. * 6 下发修改(核保员下发)
  83. * 8 已通过核保未实收
  84. * 9 待核保
  85. */
  86. String totalUnderWriteInd = "";
  87. //同保交商
  88. if (haveJQFlag && haveSYFlag) {
  89. //已通过核保未实收
  90. if ("8".contains(jqStatus) && "8".contains(syStatus)) {
  91. totalUnderWriteInd = "8";
  92. } else if ("1".contains(jqStatus) || "1".contains(syStatus)) {
  93. totalUnderWriteInd = "1";
  94. } else if ("9".contains(jqStatus) || "9".contains(syStatus)) {
  95. totalUnderWriteInd = "9";
  96. } else {
  97. totalUnderWriteInd = "6";
  98. }
  99. } else {//单保交强或单保商业
  100. String status = jqStatus;
  101. if (StringUtils.isNotEmpty(syStatus)) {
  102. status = syStatus;
  103. }
  104. if ("8".contains(status)) {
  105. totalUnderWriteInd = "8";
  106. } else if ("1".contains(status)) {
  107. totalUnderWriteInd = "1";
  108. } else if ("9".contains(status)) {
  109. totalUnderWriteInd = "9";
  110. } else {
  111. totalUnderWriteInd = "6";
  112. }
  113. }
  114. huaTaiSubmitCommon.setTotalUnderWriteInd(totalUnderWriteInd);
  115. huaTaiSubmitCommon.setNotion(jqNotion.toString() + syNotion.toString());
  116. return huaTaiSubmitCommon;
  117. }
  118. /**
  119. *
  120. * @param insAreaCompany 业务订单
  121. * @return
  122. */
  123. @Override
  124. public QueryStatusResult queryStatus(InsAreaCompany insAreaCompany) {
  125. QueryStatusResult queryStatusResult = new QueryStatusResult();
  126. queryStatusResult.setStatus(false);
  127. // 获取协议配置信息
  128. // 1. 协议id获取配置实体
  129. PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
  130. if(ptlAgreementAttribution == null) {
  131. return queryStatusResult;
  132. }
  133. HuaTaiConfigureParameters huaTaiConfigureParameters =
  134. configureParametersComponents.toEntity(HuaTaiConfigureParameters.class,
  135. ptlAgreementAttribution);
  136. // 2. 组装请求体
  137. HuaTaiSubmitStatusQueryResponse submitStatusQueryResponse = submitStatus(insAreaCompany,
  138. huaTaiConfigureParameters, "2");
  139. HuaTaiSubmitCommon huaTaiSubmitCommon = getSubmitStatus(insAreaCompany, submitStatusQueryResponse);
  140. // 3. 通过返回核保状态修改状态
  141. if ("1".equals(huaTaiSubmitCommon.getTotalUnderWriteInd())) {//已通过核保已实收
  142. queryStatusResult.setStatus(true);
  143. queryStatusResult.setPayTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  144. }
  145. return queryStatusResult;
  146. }
  147. }