Преглед на файлове

灵活用工消息实时推送

huihui преди 1 година
родител
ревизия
e5ec4fb9e2

+ 6 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysAmountAuditingServiceImpl.java

@@ -26,6 +26,7 @@ import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.fnc.entity.InsPlyIncome;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.utils.StringUtils;
+import com.ydtech.utils.sendCollectUtils.SendCollectUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -51,6 +52,9 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
     @Autowired
     private SysUserAccountHistoryMapper sysUserAccountHistoryMapper;
 
+    @Autowired
+    private SendCollectUtils sendCollectUtils;
+
     /**
      *  @version
      *  @author: hxl
@@ -125,6 +129,8 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
             BeanUtils.copyProperties(sysAmountAuditingVo, sysAmountAuditingEntity);
             sysAmountAuditingEntity.setCreateTime(null);
             baseMapper.updateById(sysAmountAuditingEntity);
+            //推送提现记录
+            sendCollectUtils.sendCollect(sysAmountAuditingVo);
             //通过审核表id查询历史记录表
             LambdaQueryWrapper<SysUserAccountHistory> lqw = new LambdaQueryWrapper<>();
             lqw.eq(SysUserAccountHistory::getAuditiingId, sysAmountAuditingEntity.getId());

+ 6 - 1
src/main/java/com/ydtech/modules/fnc/controller/CarSettleController.java

@@ -16,6 +16,7 @@ import com.ydtech.modules.fnc.entity.InsFeeAuditHistory;
 import com.ydtech.modules.fnc.entity.vo.ProblemOrderQueryVo;
 import com.ydtech.modules.fnc.service.InsFeeAuditHistoryService;
 import com.ydtech.modules.fnc.service.InsFeeAuditService;
+import com.ydtech.modules.fnc.utils.SendProjectUtils;
 import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
 import com.ydtech.modules.order.constants.OrderFeeAuditHistroy;
 import com.ydtech.modules.order.entity.BasePageResult;
@@ -31,6 +32,7 @@ import com.ydtech.modules.order.service.InsOrdersTrackService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -66,6 +68,9 @@ public class CarSettleController extends BaseController {
 
     }
 
+    @Autowired
+    private SendProjectUtils sendProjectUtils;
+
     /**
      * 根据费用审核状态查询订单 auditStatus
      *
@@ -150,7 +155,7 @@ public class CarSettleController extends BaseController {
                 return HttpResult.error("系统异常");
             }
             //异步处理推送用工账务平台发放服务
-            insFeeAuditService.sendProject(insOrderNo);
+            sendProjectUtils.sendProject(insOrderNo);
             return HttpResult.ok("审核成功");
         } else {
             return HttpResult.error("订单号有误-未承保");

+ 0 - 2
src/main/java/com/ydtech/modules/fnc/service/InsFeeAuditService.java

@@ -44,6 +44,4 @@ public interface InsFeeAuditService extends IService<InsFeeAudit> {
       */
      InsFeeAudit getFeeAuditByInsOrderNo(String insOrderNo);
 
-     void sendProject(String insOrderNo);
-
 }

+ 0 - 174
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -1018,178 +1018,4 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         return this.getOne(queryWrapper);
     }
 
-    @Override
-    public void sendProject(String insOrderNo) {
-        log.info("订单:{},审核通过后首次推送服务", insOrderNo);
-        executorService.submit(new Runnable() {
-            @Override
-            public void run() {
-                log.info("异步线程开始!程序启动时间:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
-                SendProjectInfo sendProjectInfo = new SendProjectInfo();
-                //查询归属信息
-                OrderVo orderAndAreaCompany = new OrderVo();
-                EsmUserReferrer esmUserReferrer = new EsmUserReferrer();
-                try {
-                    log.info("查询ins_orders数据库入参:{}", insOrderNo);
-                    orderAndAreaCompany = insOrdersMapper.getOrderAndAreaCompany(insOrderNo);
-                    log.info("查询ins_orders数据库出参:{}", JSON.toJSON(orderAndAreaCompany));
-                    log.info("查询esm_user_referrer数据库入参:{}", orderAndAreaCompany.getUserid());
-                    esmUserReferrer = esmUserReferrerService.getById(orderAndAreaCompany.getUserid());
-                    log.info("查询esm_user_referrer数据库出参:{}", JSON.toJSON(esmUserReferrer));
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    log.error("查询ins_orders/esm_user_referrer数据库报错:{}", e.getMessage());
-                }
-                if (esmUserReferrer != null) {
-                    sendProjectInfo.setReferrerNo(esmUserReferrer.getReferrerId());
-                }
-                if (orderAndAreaCompany != null) {
-                    sendProjectInfo.setUserId(orderAndAreaCompany.getUserid());
-                }
-                //查询费用信息
-                log.info("查询ins_fee_order_new数据库");
-                InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getOne(new LambdaQueryWrapper<InsFeeOrderNew>()
-                        .eq(InsFeeOrderNew::getInsOrderNo, insOrderNo));
-                log.info("查询ins_fee_order_new数据库出参:{}", JSON.toJSON(insFeeOrderNew));
-                FeeOrderNewVo.ExportFee exportFee = exportFee(insFeeOrderNew);
-                BigDecimal totalAmount = exportFee.getTotalAmount();
-
-                StringBuffer uuid = new StringBuffer();
-                uuid.append(new SimpleDateFormat("yyyyMMddHHmmss"))
-                        .append(UUID.randomUUID());
-
-                SendProjectInfo userInfo = new SendProjectInfo();
-                try {
-                    log.info("查询数据库保险订单表入参:{}", insOrderNo);
-                    userInfo = insOrdersMapper.getOrderByCompanyId(insOrderNo);
-                    log.info("查询数据库保险订单表出参:{}", JSON.toJSON(userInfo));
-                } catch (Exception e) {
-                    log.error("查询数据库保险订单表报错:{}", e.getMessage());
-                }
-
-                if (userInfo == null) {
-                    return;
-                }
-
-                sendProjectInfo.setGiveBudget(totalAmount);
-                sendProjectInfo.setUuid(uuid.toString());
-                sendProjectInfo.setUserName(userInfo.getUserName());
-                sendProjectInfo.setUserPhone(userInfo.getUserPhone());
-                sendProjectInfo.setUserCarNum(userInfo.getUserCarNum());
-
-                SendProjectEntity addSendProject = new SendProjectEntity();
-                addSendProject.setTotalAmount(sendProjectInfo.getGiveBudget());
-                addSendProject.setUserName(sendProjectInfo.getUserName());
-                addSendProject.setUserCarNum(sendProjectInfo.getUserCarNum());
-                addSendProject.setUserPhone(sendProjectInfo.getUserPhone());
-                addSendProject.setSendState(STRING_2);
-                addSendProject.setSendUuid(sendProjectInfo.getSendUuid());
-                addSendProject.setUserId(sendProjectInfo.getUserId());
-                addSendProject.setReferrerNo(sendProjectInfo.getReferrerNo());
-                addSendProject.setFailNum(INTEGER_0);
-                addSendProject.setState(STRING_1);
-                addSendProject.setIsDelete(STRING_0);
-                addSendProject.setCreateTime(new Date());
-                addSendProject.setUpdateTime(new Date());
-                try {
-                    log.info("新增推送服务数据库入参:{}", JSON.toJSON(addSendProject));
-                    sendProjectMapper.addSendProjectInfo(addSendProject);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    log.error("新增推送服务数据库报错:{}", e.getMessage());
-                }
-                sendProjrctUtils.firstSendProject(sendProjectInfo);
-            }
-        });
-    }
-
-    private FeeOrderNewVo.ExportFee exportFee(InsFeeOrderNew insFeeOrderNew) {
-        List<FeeOrderNewVo.ExportFee> exportFeeList = new ArrayList<>();
-        //region 出口费用
-        //交强
-        FeeOrderNewVo.ExportFee jqExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_1,
-                insFeeOrderNew.getJqPremium(), insFeeOrderNew.getJqCostsExportProportion(),
-                insFeeOrderNew.getJqExportOtherCostsProportion(),
-                insFeeOrderNew.getJqExportSuperviseCostsPremiums(), insFeeOrderNew.getJqExportOtherCostsPremiums()
-        );
-        //exportFeeList.add(jqExportFee);
-
-        //交强
-        FeeOrderNewVo.ExportFee syExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_2,
-                insFeeOrderNew.getSyPremium(), insFeeOrderNew.getSyCostsExportProportion(),
-                insFeeOrderNew.getSyExportOtherCostsProportion(),
-                insFeeOrderNew.getSyExportSuperviseCostsPremiums(), insFeeOrderNew.getSyExportOtherCostsPremiums()
-        );
-        //exportFeeList.add(syExportFee);
-
-        //交强
-        FeeOrderNewVo.ExportFee noExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_3,
-                insFeeOrderNew.getNoPremium(), insFeeOrderNew.getNoCostsExportProportion(),
-                insFeeOrderNew.getNoExportOtherCostsProportion(),
-                insFeeOrderNew.getNoExportSuperviseCostsPremiums(), insFeeOrderNew.getNoExportOtherCostsPremiums());
-
-        // exportFeeList.add(noExportFee);
-        //add  by  hxl   添加出单员不能查看优惠的限制    2024-07-11
-        String userId = BaseController.getUserId();
-        SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
-        if (sysUserRole != null && sysUserRole.getRoleId() == 19) {
-            jqExportFee.setTotalAmount(BigDecimal.ZERO);
-            jqExportFee.setTotalProportion(BigDecimal.ZERO);
-            syExportFee.setTotalAmount(BigDecimal.ZERO);
-            syExportFee.setTotalProportion(BigDecimal.ZERO);
-            noExportFee.setTotalAmount(BigDecimal.ZERO);
-            noExportFee.setTotalProportion(BigDecimal.ZERO);
-        }
-        exportFeeList.add(jqExportFee);
-        exportFeeList.add(syExportFee);
-        exportFeeList.add(noExportFee);
-        //出口费用合计
-        FeeOrderNewVo.ExportFee exportFeeTotal = assignExportFeeTotal(exportFeeList);
-        return exportFeeTotal;
-    }
-
-    private FeeOrderNewVo.ExportFee assignExportFeeTotal(List<FeeOrderNewVo.ExportFee> exportFeeList) {
-        FeeOrderNewVo.ExportFee exportFee = new FeeOrderNewVo.ExportFee();
-        exportFee.setInsuranceType(BusinessConstant.FEE_INSURANCE_TYPE_4);
-        //总费用合计
-        BigDecimal totalAmount = exportFeeList.stream().map(FeeOrderNewVo.ExportFee::getTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-        exportFee.setTotalAmount(Optional.of(totalAmount).orElse(BigDecimal.ZERO));
-        return exportFee;
-    }
-
-    /**
-     * 出口费用赋值
-     *
-     * @param title
-     * @param premium
-     * @param superviseCostsProportion
-     * @param otherCostsProportion
-     * @param superviseCostsPremiums
-     * @param otherCostsPremiums
-     * @return
-     */
-    public FeeOrderNewVo.ExportFee assignExportFee(String title, BigDecimal premium, BigDecimal superviseCostsProportion,
-                                                   BigDecimal otherCostsProportion,
-                                                   BigDecimal superviseCostsPremiums, BigDecimal otherCostsPremiums
-    ) {
-        FeeOrderNewVo.ExportFee exportFee = new FeeOrderNewVo.ExportFee();
-        exportFee.setInsuranceType(title);
-        //保费
-        exportFee.setPremium(premium);
-        //手续费比例
-        exportFee.setSuperviseCosts(superviseCostsProportion);
-        //跟单比例
-        exportFee.setOtherCostsProportion(otherCostsProportion);
-        //总比例
-        exportFee.setTotalProportion(superviseCostsProportion.add(otherCostsProportion));
-        //手续费
-        exportFee.setSuperviseCostsPremiums(superviseCostsPremiums);
-        //跟单费
-        exportFee.setOtherCostsPremiums(otherCostsPremiums);
-        //总费用
-        exportFee.setTotalAmount(superviseCostsPremiums.add(otherCostsPremiums));
-
-        return exportFee;
-    }
-
 }

+ 90 - 0
src/main/java/com/ydtech/modules/fnc/utils/SendProjectUtils.java

@@ -0,0 +1,90 @@
+package com.ydtech.modules.fnc.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
+import com.ydtech.modules.order.entity.vo.OrderVo;
+import com.ydtech.modules.order.entity.vo.sendProject.SendProjectInfo;
+import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.sendProject.dao.SendProjectMapper;
+import com.ydtech.modules.sendProject.entity.SendProjectEntity;
+import com.ydtech.utils.sendProjectUtils.SendProjrctUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+@Slf4j
+@Service
+public class SendProjectUtils {
+
+    @Autowired
+    private InsOrdersService insOrdersService;
+
+    @Autowired
+    private SendProjectMapper sendProjectMapper;
+
+    @Autowired
+    private SendProjrctUtils sendProjrctUtils;
+
+    private static final String STRING_0 = "0";
+    private static final String STRING_1 = "1";
+    private static final String STRING_2 = "2";
+    private static final Integer INTEGER_0 = 0;
+
+    @Async
+    public void sendProject(String orderNo) {
+        SendProjectInfo sendProjectInfo = new SendProjectInfo();
+        OrderVo data = insOrdersService.getByCompanyId(orderNo, "accountingUser").getData();
+        List<FeeOrderNewVo.ExportFee> exportFee = data.getFeeOrderNewVo().getExportFee();
+
+        for (FeeOrderNewVo.ExportFee fee : exportFee) {
+            if ("合计".equals(fee.getInsuranceType())) {
+                sendProjectInfo.setGiveBudget(fee.getTotalAmount());
+            }
+        }
+
+        StringBuffer uuid = new StringBuffer();
+        uuid.append(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()))
+                .append(UUID.randomUUID());
+        sendProjectInfo.setReferrerNo(data.getReferrerNo());
+        sendProjectInfo.setUserId(data.getUserid());
+        sendProjectInfo.setUserPhone(data.getApplyinfo().getString("mobile"));
+        sendProjectInfo.setUserCarNum(data.getLicenseno());
+        sendProjectInfo.setUserName(data.getInsuredname());
+        sendProjectInfo.setUuid(uuid.toString());
+
+
+
+        SendProjectEntity addSendProject = new SendProjectEntity();
+        addSendProject.setTotalAmount(sendProjectInfo.getGiveBudget());
+        addSendProject.setUserName(sendProjectInfo.getUserName());
+        addSendProject.setUserCarNum(sendProjectInfo.getUserCarNum());
+        addSendProject.setUserPhone(sendProjectInfo.getUserPhone());
+        addSendProject.setSendState(STRING_2);
+        addSendProject.setSendUuid(sendProjectInfo.getUuid());
+        addSendProject.setUserId(sendProjectInfo.getUserId());
+        addSendProject.setReferrerNo(sendProjectInfo.getReferrerNo());
+        addSendProject.setFailNum(INTEGER_0);
+        addSendProject.setState(STRING_1);
+        addSendProject.setIsDelete(STRING_0);
+        Date date = new Date();
+        addSendProject.setCreateTime(date);
+        addSendProject.setUpdateTime(date);
+        try {
+            log.info("新增推送服务数据库入参:{}", JSON.toJSON(addSendProject));
+            sendProjectMapper.addSendProjectInfo(addSendProject);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("新增推送服务数据库报错:{}", e.getMessage());
+        }
+
+        sendProjrctUtils.firstSendProject(sendProjectInfo);
+
+    }
+
+}

+ 36 - 0
src/main/java/com/ydtech/modules/order/entity/vo/sendCollect/SendCollect.java

@@ -0,0 +1,36 @@
+package com.ydtech.modules.order.entity.vo.sendCollect;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class SendCollect implements Serializable {
+
+    private static final long serialVersionUID = 1096616855277490184L;
+
+    /** 收款人 */
+    private String payee;
+
+    /** 收款账户 */
+    private String receivingAccount;
+
+    /** 提取金额 */
+    private BigDecimal extractMoney;
+
+    /** 服务费 */
+    private BigDecimal serviceCharge;
+
+    /** 交易类型0-提现;1退款 */
+    private String tranType;
+
+    /** 掌柜唯一ID */
+    private String zgUuid;
+
+    /**
+     * 提现时间
+     */
+    private Date applicationTime;
+}

+ 2 - 2
src/main/java/com/ydtech/modules/order/entity/vo/sendProject/SendProjectInfo.java

@@ -22,7 +22,7 @@ public class SendProjectInfo extends SendProjectEntity implements Serializable {
     /**
      * 用户姓名
      */
-    private String userName;
+    private String name;
 
     /**
      * 用户车牌号
@@ -32,7 +32,7 @@ public class SendProjectInfo extends SendProjectEntity implements Serializable {
     /**
      * 用户电话号
      */
-    private String userPhone;
+    private String mobile;
 
     /**
      * 推荐人工号

+ 15 - 0
src/main/java/com/ydtech/modules/sendCollect/dao/SendCollectMapper.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.sendCollect.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.sendCollect.entity.SendCollectEntity;
+
+import java.util.List;
+
+public interface SendCollectMapper extends BaseMapper<SendCollectEntity> {
+
+    void addSendCollectInfo(SendCollectEntity sendCollectEntity);
+
+    void updateSendCollectInfo(SendCollectEntity sendCollectEntity);
+
+    List<SendCollectEntity> getSendCollectFailInfo();
+}

+ 91 - 0
src/main/java/com/ydtech/modules/sendCollect/entity/SendCollectEntity.java

@@ -0,0 +1,91 @@
+package com.ydtech.modules.sendCollect.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class SendCollectEntity implements Serializable {
+
+    private static final long serialVersionUID = -9190669795077605460L;
+
+    /**
+     * 主键
+     */
+    @ApiModelProperty("主键")
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 银行卡号
+     */
+    @ApiModelProperty("银行卡号")
+    @TableField(value = "bank_number")
+    private String bankNumber;
+
+    /**
+     * 提现金额
+     */
+    @ApiModelProperty("提现金额")
+    @TableField(value = "amount")
+    private BigDecimal amount;
+
+    /**
+     * 提现用户信息
+     */
+    @ApiModelProperty("提现用户信息")
+    @TableField(value = "user_info")
+    private String userInfo;
+
+    /**
+     * 提现单号
+     */
+    @ApiModelProperty("提现单号")
+    @TableField(value = "collect_id")
+    private String collectId;
+
+    /**
+     * 提现时间
+     */
+    @ApiModelProperty("提现时间")
+    @TableField(value = "collect_time")
+    private Date collectTime;
+
+    /**
+     * 推送状态
+     */
+    @ApiModelProperty("推送状态")
+    @TableField(value = "send_state")
+    private String sendState;
+
+    /**
+     * 失败次数
+     */
+    @ApiModelProperty("失败次数")
+    @TableField(value = "fail_num")
+    private Integer failNum;
+
+    /**
+     * 交易类型
+     */
+    @ApiModelProperty("交易类型")
+    @TableField(value = "tran_type")
+    private String tranType;
+
+    @ApiModelProperty("post请求")
+    @TableField(value = "http_post")
+    private String httpPost;
+
+    @ApiModelProperty("请求响应")
+    @TableField(value = "http_response")
+    private String httpResponse;
+
+    @ApiModelProperty("推送uuid")
+    @TableField(value = "send_uuid")
+    private String sendUuid;
+}

+ 178 - 0
src/main/java/com/ydtech/utils/sendCollectUtils/SendCollectUtils.java

@@ -0,0 +1,178 @@
+package com.ydtech.utils.sendCollectUtils;
+
+import com.alibaba.fastjson.JSON;
+import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
+import com.ydtech.modules.order.entity.vo.sendCollect.SendCollect;
+import com.ydtech.modules.sendCollect.dao.SendCollectMapper;
+import com.ydtech.modules.sendCollect.entity.SendCollectEntity;
+import com.ydtech.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+@Slf4j
+@Service
+public class SendCollectUtils {
+
+    @Autowired
+    private SendCollectMapper sendCollectMapper;
+
+    @Value("${sendMessage-zg-yggl-IP}")
+    private String sendMessageIP;
+
+    private static final String STRING_0 = "0";
+    private static final String STRING_1 = "1";
+    private static final String STRING_2 = "2";
+    private static final Integer INTEGER_0 = 0;
+    private static final String RESPONSE_SUCCESS = "200";
+
+    @Async
+    public void send(SendCollectEntity sendCollectEntity, SendCollect sendCollect) {
+
+        // 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
+        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
+
+        // 创建Post请求
+        HttpPost httpPost = new HttpPost(sendMessageIP + "withdrawal/record/acceptPushWithdrawalData");
+        // 我这里利用阿里的fastjson,将Object转换为json字符串;
+        // (需要导入com.alibaba.fastjson.JSON包)
+        String jsonString = JSON.toJSONString(sendCollect);
+
+        StringEntity entity = new StringEntity(jsonString, "UTF-8");
+
+        // post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中
+        httpPost.setEntity(entity);
+        httpPost.setHeader("Content-Type", "application/json;charset=utf8");
+
+        sendCollectEntity.setHttpPost(httpPost.toString());
+
+        // 响应模型
+        CloseableHttpResponse response = null;
+
+        try {
+
+            // 由客户端执行(发送)Post请求
+            response = httpClient.execute(httpPost);
+            // 从响应模型中获取响应实体
+            HttpEntity responseEntity = response.getEntity();
+
+
+            //从响应实体中截取状态码
+            String string = EntityUtils.toString(responseEntity);
+            sendCollectEntity.setHttpResponse(string);
+            String responseString = string.substring(string.lastIndexOf(":") + 1);
+            String responseCode = responseString.substring(0, responseString.length() - 1);
+            log.info("响应状态为:{}", response.getStatusLine());
+
+            if (RESPONSE_SUCCESS.equals(responseCode)) {
+                sendCollectEntity.setFailNum(null);
+                sendCollectEntity.setSendState(STRING_1);
+                log.info("修改send_collect_history数据库入参:{}", JSON.toJSONString(sendCollectEntity));
+                sendCollectMapper.updateSendCollectInfo(sendCollectEntity);
+            } else {
+                sendCollectEntity.setSendState(STRING_0);
+                log.info("修改send_collect_history数据库入参:{}", JSON.toJSONString(sendCollectEntity));
+                sendCollectMapper.updateSendCollectInfo(sendCollectEntity);
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                // 释放资源
+                if (httpClient != null) {
+                    httpClient.close();
+                }
+                if (response != null) {
+                    response.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public void sendCollect (SysAmountAuditingVo sysAmountAuditingVo) {
+
+        StringBuilder sendUuid = new StringBuilder();
+        sendUuid.append(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()))
+                .append(UUID.randomUUID());
+
+        StringBuilder userInfo = new StringBuilder();
+        userInfo.append(sysAmountAuditingVo.getUserName())
+                .append("-")
+                .append(sysAmountAuditingVo.getUserId());
+        SendCollect sendCollect = new SendCollect();
+        sendCollect.setZgUuid(sysAmountAuditingVo.getId());
+        sendCollect.setApplicationTime(sysAmountAuditingVo.getCreateTime());
+        sendCollect.setExtractMoney(sysAmountAuditingVo.getAmount());
+        sendCollect.setReceivingAccount(sysAmountAuditingVo.getBankNumber());
+        sendCollect.setTranType(STRING_0);
+        sendCollect.setPayee(userInfo.toString());
+
+        SendCollectEntity sendCollectEntity = new SendCollectEntity();
+        sendCollectEntity.setCollectId(sysAmountAuditingVo.getId());
+        sendCollectEntity.setSendState(STRING_2);
+        sendCollectEntity.setCollectTime(sysAmountAuditingVo.getCreateTime());
+        sendCollectEntity.setAmount(sysAmountAuditingVo.getAmount());
+        sendCollectEntity.setBankNumber(sysAmountAuditingVo.getBankNumber());
+        sendCollectEntity.setUserInfo(userInfo.toString());
+        sendCollectEntity.setFailNum(INTEGER_0);
+        sendCollectEntity.setSendUuid(sendUuid.toString());
+        log.info("新增推送send_collect_history数据库入参:{}", JSON.toJSONString(sendCollectEntity));
+        sendCollectMapper.addSendCollectInfo(sendCollectEntity);
+
+        send(sendCollectEntity,sendCollect);
+    }
+
+//    @Scheduled(cron = "0 */1 * * * ?")
+    public void sendCollectRetry() {
+        log.info("推送提现历史补偿启动,启动时间:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+        List<SendCollectEntity> sendCollectFailInfoList = new ArrayList<SendCollectEntity>();
+        try {
+            sendCollectFailInfoList = sendCollectMapper.getSendCollectFailInfo();
+            log.info("查询send_collect_history数据库出参:{}", JSON.toJSON(sendCollectFailInfoList));
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("查询send_collect_history数据库报错:{}", e.getMessage());
+        }
+        if (sendCollectFailInfoList != null && !sendCollectFailInfoList.isEmpty()) {
+            for (SendCollectEntity sendCollectEntity : sendCollectFailInfoList) {
+                if (sendCollectEntity == null && StringUtils.isNullOrEmpty(sendCollectEntity)) {
+                    continue;
+                }
+                if (sendCollectEntity.getFailNum() != null && sendCollectEntity.getFailNum() < 3) {
+                    Integer failNum = sendCollectEntity.getFailNum();
+                    failNum = ++failNum;
+                    sendCollectEntity.setFailNum(failNum);
+
+                    SendCollect sendCollect = new SendCollect();
+                    sendCollect.setZgUuid(sendCollectEntity.getCollectId());
+                    sendCollect.setApplicationTime(sendCollectEntity.getCollectTime());
+                    sendCollect.setExtractMoney(sendCollectEntity.getAmount());
+                    sendCollect.setReceivingAccount(sendCollectEntity.getBankNumber());
+                    sendCollect.setTranType(sendCollectEntity.getTranType());
+                    sendCollect.setPayee(sendCollectEntity.getUserInfo());
+                    send(sendCollectEntity, sendCollect);
+                }
+            }
+        }
+    }
+}

+ 3 - 2
src/main/java/com/ydtech/utils/sendProjectUtils/SendProjectRetryUtils.java

@@ -12,6 +12,7 @@ import org.springframework.stereotype.Component;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 @Slf4j
@@ -24,9 +25,9 @@ public class SendProjectRetryUtils {
     @Autowired
     private SendProjrctUtils sendProjrctUtils;
 
-    @Scheduled(cron = "0 */1 * * * ?")
+//    @Scheduled(cron = "0 */1 * * * ?")
     private void sendProjectRetry() {
-        log.info("推送服务补偿启动,启动时间:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
+        log.info("推送服务补偿启动,启动时间:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
         List<SendProjectEntity> sendFailInfo = new ArrayList<SendProjectEntity>();
         try {
             sendFailInfo = sendProjectMapper.getSendFailInfo();

+ 9 - 20
src/main/java/com/ydtech/utils/sendProjectUtils/SendProjrctUtils.java

@@ -15,6 +15,7 @@ import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.io.IOException;
@@ -29,6 +30,9 @@ public class SendProjrctUtils {
     @Autowired
     private SendProjectMapper sendProjectMapper;
 
+    @Value("${sendMessage-zg-yggl-IP}")
+    private String sendMessageIP;
+
     private static final String STRING_0 = "0";
     private static final String STRING_1 = "1";
     private static final String STRING_9 = "9";
@@ -41,7 +45,7 @@ public class SendProjrctUtils {
         CloseableHttpClient httpClient = HttpClientBuilder.create().build();
 
         // 创建Post请求
-        HttpPost httpPost = new HttpPost("http://localhost:8080/system/record");
+        HttpPost httpPost = new HttpPost(sendMessageIP + "system/record/receiveDistributeServices");
         // 我这里利用阿里的fastjson,将Object转换为json字符串;
         // (需要导入com.alibaba.fastjson.JSON包)
         String jsonString = JSON.toJSONString(sendProjectInfo);
@@ -51,8 +55,6 @@ public class SendProjrctUtils {
         // post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中
         httpPost.setEntity(entity);
         httpPost.setHeader("Content-Type", "application/json;charset=utf8");
-        httpPost.setHeader("cookie","username=admin; rememberMe=true; password=Zku924Y4c8N3a0XdUwMAG1gFwJMUiXz4//XRNxbTf+1FVZFtGDCQf4cKmT1wAjMLvjcSlsYDGRD+vGUOM5PM1g==; Admin-Token=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImFkMjIzZTNkLTU2OWUtNGMwNS1iOTk3LTA2MzVjNDBkZjNmNSJ9.cPTCVW17qiUxtpZsMvS8exY7lZb5nrYkAJUliA6gVwOk0-D4u0gJI5CS6rCvIdmeRlsvR56WvRi_cpRNJXqlQw");
-        httpPost.setHeader("authorization","Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImFkMjIzZTNkLTU2OWUtNGMwNS1iOTk3LTA2MzVjNDBkZjNmNSJ9.cPTCVW17qiUxtpZsMvS8exY7lZb5nrYkAJUliA6gVwOk0-D4u0gJI5CS6rCvIdmeRlsvR56WvRi_cpRNJXqlQw");
         sendProjectInfo.setHttpPost(httpPost.toString());
 
         // 响应模型
@@ -65,16 +67,13 @@ public class SendProjrctUtils {
         HttpEntity responseEntity = response.getEntity();
 
         //从响应实体中截取状态码
-        String responseString = EntityUtils.toString(responseEntity).substring(EntityUtils.toString(responseEntity).lastIndexOf(":") + 1);
+        String string = EntityUtils.toString(responseEntity);
+        sendProjectInfo.setHttpResponse(string);
+        String responseString = string.substring(string.lastIndexOf(":") + 1);
         responseCode = responseString.substring(0, responseString.length() - 1);
 
-        sendProjectInfo.setHttpResponse(response.toString());
 
         log.info("响应状态为:{}", response.getStatusLine());
-        if (responseEntity != null) {
-            log.info("响应内容长度为:{}", responseEntity.getContentLength());
-            log.info("响应内容长度为:{}", EntityUtils.toString(responseEntity));
-        }
         try {
             // 释放资源
             if (httpClient != null) {
@@ -105,17 +104,7 @@ public class SendProjrctUtils {
                 sendProjectInfo.setSendState(STRING_0);
                 updateSendProjectInfo(sendProjectInfo);
             }
-        } catch (ClientProtocolException e) {
-            sendProjectInfo.setHttpResponse(e.getMessage());
-            sendProjectInfo.setSendState(STRING_9);
-            updateSendProjectInfo(sendProjectInfo);
-            e.printStackTrace();
-        } catch (ParseException e) {
-            sendProjectInfo.setHttpResponse(e.getMessage());
-            sendProjectInfo.setSendState(STRING_9);
-            updateSendProjectInfo(sendProjectInfo);
-            e.printStackTrace();
-        } catch (IOException e) {
+        } catch (Exception e) {
             sendProjectInfo.setHttpResponse(e.getMessage());
             sendProjectInfo.setSendState(STRING_9);
             updateSendProjectInfo(sendProjectInfo);

+ 3 - 0
src/main/resources/application-test.yml

@@ -527,3 +527,6 @@ customer:
     url: http://39.98.41.104:8088/ai
 
 httpUrl: https://test.baoxianzhanggui.com/copartnerH5/#/pages/index/result?
+
+#灵活用工平台实时推送ip地址
+sendMessage-zg-yggl-IP: http://192.168.0.29:8080/

+ 95 - 0
src/main/resources/mapper/modules/sendCollect/SendCollectMapper.xml

@@ -0,0 +1,95 @@
+<?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">
+<mapper namespace="com.ydtech.modules.sendCollect.dao.SendCollectMapper">
+
+    <resultMap id="SendCollectEntityMap" type="com.ydtech.modules.sendCollect.entity.SendCollectEntity">
+        <result property="id" column="id"/>
+        <result property="amount" column="amount"/>
+        <result property="bankNumber" column="bank_number" jdbcType="VARCHAR"/>
+        <result property="userInfo" column="user_info" jdbcType="VARCHAR"/>
+        <result property="collectId" column="collect_id" jdbcType="VARCHAR"/>
+        <result property="collectTime" column="collect_time"/>
+        <result property="sendState" column="send_state" jdbcType="VARCHAR"/>
+        <result property="failNum" column="fail_num"/>
+        <result property="tranType" column="tran_type" jdbcType="VARCHAR"/>
+        <result property="httpPost" column="http_post"/>
+        <result property="httpResponse" column="http_response"/>
+        <result property="sendUuid" column="send_uuid"/>
+    </resultMap>
+
+    <sql id="selectSendCollectEntity">
+        SELECT
+            id,
+            amount,
+            bank_number,
+            user_info,
+            collect_id,
+            collect_time,
+            send_state,
+            fail_num,
+            tran_type,
+            http_post,
+            http_response,
+            send_uuid
+        FROM
+            send_collect_history
+    </sql>
+
+    <insert id="addSendCollectInfo" parameterType="com.ydtech.modules.sendCollect.entity.SendCollectEntity"
+            useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO send_collect_history
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="amount != null">amount,</if>
+            <if test="bankNumber != null and bankNumber != ''">bank_number,</if>
+            <if test="userInfo != null and userInfo != ''">user_info,</if>
+            <if test="collectId != null and collectId != ''">collect_id,</if>
+            <if test="collectTime != null">collect_time,</if>
+            <if test="sendState != null and sendState != ''">send_state,</if>
+            <if test="failNum != null">fail_num,</if>
+            <if test="tranType != null and tranType != ''">tran_type,</if>
+            <if test="httpPost != null and httpPost != ''">http_post,</if>
+            <if test="httpResponse != null and httpResponse != ''">http_response,</if>
+            <if test="sendUuid != null and sendUuid != ''">send_uuid,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="amount != null">#{amount},</if>
+            <if test="bankNumber != null and bankNumber != ''">#{bankNumber},</if>
+            <if test="userInfo != null and userInfo != ''">#{userInfo},</if>
+            <if test="collectId != null and collectId != ''">#{collectId},</if>
+            <if test="collectTime != null">#{collectTime},</if>
+            <if test="sendState != null and sendState != ''">#{sendState},</if>
+            <if test="failNum != null">#{failNum},</if>
+            <if test="tranType != null and tranType != ''">#{tranType},</if>
+            <if test="httpPost != null and httpPost != ''">#{httpPost},</if>
+            <if test="httpResponse != null and httpResponse != ''">#{httpResponse},</if>
+            <if test="sendUuid != null and sendUuid != ''">#{sendUuid},</if>
+        </trim>
+    </insert>
+
+    <update id="updateSendCollectInfo" parameterType="com.ydtech.modules.sendCollect.entity.SendCollectEntity">
+        UPDATE send_collect_history
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="sendState != null and sendState != ''">send_state = #{sendState},</if>
+            <if test="httpPost != null and httpPost != ''">http_post = #{httpPost},</if>
+            <if test="httpResponse != null and httpResponse != ''">http_response = #{httpResponse},</if>
+            <if test="failNum != null">fail_num = #{failNum},</if>
+        </trim>
+        WHERE
+            send_uuid = #{sendUuid}
+    </update>
+
+
+
+    <select id="getSendCollectFailInfo" resultMap="SendCollectEntityMap">
+        <include refid="selectSendCollectEntity"/>
+        WHERE
+            send_state IN ('0')
+        AND
+            fail_num <![CDATA[<]]> 3
+    </select>
+
+</mapper>

+ 2 - 0
src/main/resources/mapper/modules/sendProject/SendProjectMapper.xml

@@ -48,6 +48,8 @@
         <include refid="selectSendProjectEntity"/>
         WHERE
             send_state IN ('0', '9')
+        AND
+            fail_num <![CDATA[<]]> 3
     </select>
 
     <insert id="addSendProjectInfo" parameterType="com.ydtech.modules.sendProject.entity.SendProjectEntity"