瀏覽代碼

结算mq接受

xuzhancheng 2 周之前
父節點
當前提交
6612750837

+ 6 - 0
tz-module-pressure2/tz-module-pressure2-api/src/main/java/cn/start/tz/module/pressure2/api/taskorder/BoilerTaskOrderApi.java

@@ -2,6 +2,7 @@ package cn.start.tz.module.pressure2.api.taskorder;
 
 
 import cn.start.tz.framework.common.pojo.CommonResult;
+import cn.start.tz.module.pressure2.api.taskorder.dto.UpdatePayStatusDTO;
 import cn.start.tz.module.pressure2.enums.ApiConstants;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -9,6 +10,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
 @FeignClient(name = ApiConstants.NAME)
@@ -43,4 +45,8 @@ public interface BoilerTaskOrderApi {
     @Operation(summary = "检验意见通知书重新发起流程")
     @Parameter(name = "id", description = "id", example = "1024", required = true)
     CommonResult<Boolean> opinionNotice(@RequestParam("id") String id);
+
+    @PutMapping(PREFIX + "/updatePayStatus")
+    @Operation(summary = "更新支付状态")
+    CommonResult<Boolean> updatePayStatus(@RequestBody UpdatePayStatusDTO payInfo);
 }

+ 22 - 0
tz-module-pressure2/tz-module-pressure2-api/src/main/java/cn/start/tz/module/pressure2/api/taskorder/dto/UpdatePayStatusDTO.java

@@ -0,0 +1,22 @@
+package cn.start.tz.module.pressure2.api.taskorder.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class UpdatePayStatusDTO {
+
+    private String orderNo;
+
+    private String chargeTime;
+
+    private BigDecimal chargeAmount;
+
+    private Integer payStatus;
+
+    private Integer feeType;
+
+    private Boolean isCancel;
+
+}

+ 8 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/api/taskorder/BoilerTaskOrderApiImpl.java

@@ -2,6 +2,7 @@ package cn.start.tz.module.pressure2.api.taskorder;
 
 import cn.start.tz.framework.common.pojo.CommonResult;
 import cn.start.tz.module.pressure.api.taskorder.TaskOrderApi;
+import cn.start.tz.module.pressure2.api.taskorder.dto.UpdatePayStatusDTO;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskorder.vo.MajorIssuesSubmitVO;
 import cn.start.tz.module.pressure2.service.boilertaskorder.BoilerTaskOrderService;
 import jakarta.annotation.Resource;
@@ -47,4 +48,11 @@ public class BoilerTaskOrderApiImpl implements BoilerTaskOrderApi {
         Boolean b = taskOrderService.opinionNotice(majorIssuesSubmitVO);
         return CommonResult.success(b);
     }
+
+
+    @Override
+    public CommonResult<Boolean> updatePayStatus(UpdatePayStatusDTO payInfo) {
+        Boolean b = taskOrderService.updatePayStatus(payInfo);
+        return CommonResult.success(b);
+    }
 }

+ 2 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/dal/dataobject/boilertaskorder/BoilerTaskOrderDO.java

@@ -318,4 +318,6 @@ public class BoilerTaskOrderDO extends BaseDO {
      *
      */
     private LocalDate inputDate;
+
+    private BigDecimal payAmount;
 }

+ 95 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/mq/consumer/JSPayConChargeConsumer.java

@@ -0,0 +1,95 @@
+//package cn.start.tz.module.pressure2.mq.consumer;
+//
+//
+//
+//import cn.start.tz.module.pressure2.api.taskorder.BoilerTaskOrderApi;
+//import cn.start.tz.module.pressure2.api.taskorder.dto.UpdatePayStatusDTO;
+//import cn.start.tz.module.pressure2.mq.message.JSPayConChargeEventMessage;
+//import com.fasterxml.jackson.databind.ObjectMapper;
+//import jakarta.annotation.Resource;
+//import lombok.extern.slf4j.Slf4j;
+//import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
+//import org.apache.rocketmq.spring.core.RocketMQListener;
+//import org.springframework.context.event.EventListener;
+//import org.springframework.stereotype.Component;
+//
+//import java.util.List;
+//
+//@Component
+//@RocketMQMessageListener( // 重点:添加 @RocketMQMessageListener 注解,声明消费的 topic
+//        topic = "js_pay_con_charge",
+//        consumerGroup = "js_pay_con_charge" + "_" + "${spring.profiles.active}"
+//)
+//
+//@Slf4j
+//public class JSPayConChargeConsumer implements RocketMQListener<JSPayConChargeEventMessage> {
+//
+//    @Resource
+//    private BoilerTaskOrderApi taskOrderApi;
+//
+//    @Resource
+//    private ObjectMapper objectMapper;
+//
+//    @EventListener
+//    // @Async // Spring Event 默认在 Producer 发送的线程,通过 @Async 实现异步
+//    @Override
+//    public void onMessage(JSPayConChargeEventMessage message) {
+//        log.info("JSPayConChargeConsumer [onMessage][消息内容({})]", message);
+//
+//        if("1".equals(message.getEventType()+"")){
+//            //费用事件:1.缴费 2.解除认领
+//            if(message.getTaskList() != null && !message.getTaskList().isEmpty()){
+//                try {
+//                    List<JSPayConChargeEventMessage.TaskInfo> taskInfos = message.getTaskList();
+//                    for (JSPayConChargeEventMessage.TaskInfo taskInfo :taskInfos){
+//                        if("4".equals(taskInfo.getInData())){
+//                            //承压
+//                            log.info("PayChargeStatusSendConsumer 承压支付回调 {}", taskInfo.getTaskNo());
+//                            UpdatePayStatusDTO payInfo = new UpdatePayStatusDTO();
+//                            payInfo.setOrderNo(taskInfo.getTaskNo());
+//                            payInfo.setChargeTime(message.getChargeTime());
+//                            payInfo.setFeeType(200);
+//                            taskOrderApi.updatePayStatus(payInfo);
+//                        }else if("5".equals(taskInfo.getInData())){
+//                            // 实验室
+//
+//                        }else{
+//                            log.warn("[onMessage][消息内容({})]", taskInfo.getInData());
+//                        }
+//                    }
+//
+//                }catch (Exception e){
+//                    log.error("PayChargeStatusSendConsumer error ", e);
+//                }
+//            }
+//
+//        }else if("2".equals(message.getEventType()+"")){
+//            try {
+//                List<JSPayConChargeEventMessage.TaskInfo> taskInfos = message.getTaskList();
+//                for (JSPayConChargeEventMessage.TaskInfo taskInfo :taskInfos){
+//                    if("4".equals(taskInfo.getInData())){
+//                        //承压
+//                        log.info("PayChargeStatusSendConsumer 承压支付解除回调 {}", taskInfo.getTaskNo());
+//                        UpdatePayStatusDTO payInfo = new UpdatePayStatusDTO();
+//                        payInfo.setOrderNo(taskInfo.getTaskNo());
+//                        payInfo.setChargeTime(message.getChargeTime());
+//                        payInfo.setIsCancel(true);
+//
+//                        taskOrderApi.updatePayStatus(payInfo);
+//                    }else if("5".equals(taskInfo.getInData())){
+//                        // 实验室
+//
+//                    }else{
+//                        log.warn("[onMessage][消息内容({})]", taskInfo.getInData());
+//                    }
+//                }
+//
+//            }catch (Exception e){
+//                log.error("PayChargeStatusSendConsumer error ", e);
+//            }
+//        }
+//
+//    }
+//
+//
+//}

+ 167 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/mq/consumer/PayChargeStatusSendConsumer.java

@@ -0,0 +1,167 @@
+//package cn.start.tz.module.pressure2.mq.consumer;
+//
+//import cn.start.tz.module.pressure2.api.taskorder.BoilerTaskOrderApi;
+//import cn.start.tz.module.pressure2.api.taskorder.dto.UpdatePayStatusDTO;
+//import cn.start.tz.module.pressure2.mq.message.PayChargeEventMessage;
+//import com.fasterxml.jackson.databind.JsonNode;
+//import com.fasterxml.jackson.databind.ObjectMapper;
+//import com.fasterxml.jackson.databind.node.ArrayNode;
+//import jakarta.annotation.Resource;
+//import lombok.extern.slf4j.Slf4j;
+//import org.apache.commons.lang3.StringUtils;
+//import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
+//import org.apache.rocketmq.spring.core.RocketMQListener;
+//import org.springframework.context.event.EventListener;
+//import org.springframework.stereotype.Component;
+//
+//@Component
+//@RocketMQMessageListener( // 重点:添加 @RocketMQMessageListener 注解,声明消费的 topic
+//        topic = "js_pay_service_charge_status",
+//        consumerGroup = "js_pay_service_charge_status" + "_" + "${spring.profiles.active}"
+//)
+//
+//@Slf4j
+//public class PayChargeStatusSendConsumer implements RocketMQListener<PayChargeEventMessage> {
+//
+//
+//    @Resource
+//    private BoilerTaskOrderApi taskOrderApi;
+//
+//    @Resource
+//    private ObjectMapper objectMapper;
+//
+//    /**
+//     * 健壮的JSON解析方法,处理格式问题
+//     */
+//    private PayChargeEventMessage.TaskInfo[] parseTaskList(String taskListJson) {
+//        if (StringUtils.isBlank(taskListJson)) {
+//            return new PayChargeEventMessage.TaskInfo[0];
+//        }
+//
+//        try {
+//            // 首先尝试直接解析
+//            return objectMapper.readValue(taskListJson, PayChargeEventMessage.TaskInfo[].class);
+//        } catch (Exception e) {
+//            log.warn("直接JSON解析失败,尝试修复格式,错误: {}", e.getMessage());
+//
+//            try {
+//                // 尝试解析为JsonNode以便修复
+//                JsonNode rootNode = objectMapper.readTree(taskListJson);
+//
+//                if (rootNode.isArray()) {
+//                    // 如果是数组,直接转换
+//                    return objectMapper.convertValue(rootNode, PayChargeEventMessage.TaskInfo[].class);
+//                } else if (rootNode.isObject()) {
+//                    // 如果是单个对象,包装成数组
+//                    ArrayNode arrayNode = objectMapper.createArrayNode();
+//                    arrayNode.add(rootNode);
+//                    return objectMapper.convertValue(arrayNode, PayChargeEventMessage.TaskInfo[].class);
+//                } else {
+//                    log.error("无法解析的JSON格式,既不是数组也不是对象: {}", taskListJson);
+//                    return new PayChargeEventMessage.TaskInfo[0];
+//                }
+//            } catch (Exception e2) {
+//                log.error("JSON修复失败,原始数据: {}", taskListJson, e2);
+//                return new PayChargeEventMessage.TaskInfo[0];
+//            }
+//        }
+//    }
+//
+//    @EventListener
+//    // @Async // Spring Event 默认在 Producer 发送的线程,通过 @Async 实现异步
+//    @Override
+//    public void onMessage(PayChargeEventMessage message) {
+//        log.info("PayChargeStatusSendConsumer [onMessage][消息内容({})]", message);
+//
+//        //费用事件:1.缴费 2.解除认领
+//        if("1".equals(message.getEventType()+"")){
+//            if(StringUtils.isNotBlank(message.getTaskList())){
+//                // 使用健壮的解析方法
+//                PayChargeEventMessage.TaskInfo[] taskInfos = parseTaskList(message.getTaskList());
+//
+//                if (taskInfos.length == 0) {
+//                    log.warn("PayChargeStatusSendConsumer 解析到空的taskList数据");
+//                    return;
+//                }
+//
+//                log.info("PayChargeStatusSendConsumer 成功解析到{}条任务记录", taskInfos.length);
+//
+//                for (PayChargeEventMessage.TaskInfo taskInfo : taskInfos) {
+//                    try {
+//                        if("4".equals(taskInfo.getInData())){
+//                            //承压
+//                            log.info("PayChargeStatusSendConsumer 承压支付回调 {} - 金额: {}",
+//                                   taskInfo.getTaskNo(), taskInfo.getChargeAmount());
+//                            UpdatePayStatusDTO payInfo = new UpdatePayStatusDTO();
+//                            payInfo.setOrderNo(taskInfo.getTaskNo());
+//                            payInfo.setChargeTime(message.getChargeTime());
+//                            payInfo.setChargeAmount(taskInfo.getChargeAmount());
+//
+//                            taskOrderApi.updatePayStatus(payInfo);
+//                        } else if("5".equals(taskInfo.getInData())){
+//                            // 实验室
+//                            log.info("PayChargeStatusSendConsumer 实验室支付回调 {} - 金额: {}",
+//                                   taskInfo.getTaskNo(), taskInfo.getChargeAmount());
+//                        } else {
+//                            log.warn("PayChargeStatusSendConsumer 未知业务类型 inData: {}, taskNo: {}",
+//                                   taskInfo.getInData(), taskInfo.getTaskNo());
+//                        }
+//                    } catch (Exception e) {
+//                        log.error("PayChargeStatusSendConsumer 处理单条记录失败, taskNo: {}, 错误: {}",
+//                                taskInfo.getTaskNo(), e.getMessage(), e);
+//                        // 继续处理其他记录,不因为单条记录失败而中断
+//                    }
+//                }
+//            } else {
+//                log.warn("PayChargeStatusSendConsumer taskList为空");
+//            }
+//        }else if("2".equals(message.getEventType()+"")){
+//            if(StringUtils.isNotBlank(message.getTaskList())){
+//                // 使用健壮的解析方法
+//                PayChargeEventMessage.TaskInfo[] taskInfos = parseTaskList(message.getTaskList());
+//
+//                if (taskInfos.length == 0) {
+//                    log.warn("PayChargeStatusSendConsumer 解析到空的taskList数据");
+//                    return;
+//                }
+//
+//                log.info("PayChargeStatusSendConsumer 成功解析到{}条任务记录", taskInfos.length);
+//
+//                for (PayChargeEventMessage.TaskInfo taskInfo : taskInfos) {
+//                    try {
+//                        if("4".equals(taskInfo.getInData())){
+//                            //承压
+//                            log.info("PayChargeStatusSendConsumer 承压取消回调 {} - 金额: {}",
+//                                    taskInfo.getTaskNo(), taskInfo.getChargeAmount());
+//                            UpdatePayStatusDTO payInfo = new UpdatePayStatusDTO();
+//                            payInfo.setOrderNo(taskInfo.getTaskNo());
+//                            payInfo.setChargeTime(message.getChargeTime());
+//                            payInfo.setChargeAmount(taskInfo.getChargeAmount());
+//                            payInfo.setIsCancel(true);
+//
+//                            taskOrderApi.updatePayStatus(payInfo);
+//                        } else if("5".equals(taskInfo.getInData())){
+//                            // 实验室
+//                            log.info("PayChargeStatusSendConsumer 实验室支付取消回调 {} - 金额: {}",
+//                                    taskInfo.getTaskNo(), taskInfo.getChargeAmount());
+//                        } else {
+//                            log.warn("PayChargeStatusSendConsumer 未知业务类型 inData: {}, taskNo: {}",
+//                                    taskInfo.getInData(), taskInfo.getTaskNo());
+//                        }
+//                    } catch (Exception e) {
+//                        log.error("PayChargeStatusSendConsumer 处理单条记录失败, taskNo: {}, 错误: {}",
+//                                taskInfo.getTaskNo(), e.getMessage(), e);
+//                        // 继续处理其他记录,不因为单条记录失败而中断
+//                    }
+//                }
+//            } else {
+//                log.warn("PayChargeStatusSendConsumer taskList为空");
+//            }
+//        } else {
+//            log.info("PayChargeStatusSendConsumer 忽略事件类型: {}", message.getEventType());
+//        }
+//
+//    }
+//
+//
+//}

+ 63 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/mq/message/JSPayConChargeEventMessage.java

@@ -0,0 +1,63 @@
+package cn.start.tz.module.pressure2.mq.message;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class JSPayConChargeEventMessage {
+
+    /**
+     * 费用类型 (1.委托服务费 2.法定费用)
+     */
+    private Integer chargeType;
+
+    /**
+     * 费用事件 (1.缴费 2.解除缴费)
+     */
+    private Integer eventType;
+
+    private String contractNo;
+
+    private String unitcode;
+
+    private String unitname;
+
+    private String appBizDataId;
+
+    private BigDecimal chargeAmount;
+
+    private String payType;// 缴费方式(1银联扫码支付,2现场缴费,3对公转账)
+
+    /**
+     * 缴费时间 (格式:yyyy-MM-dd HH:mm:ss)
+     */
+    private String chargeTime;
+
+    /**
+     * 服务单集合
+     */
+    //private String taskList;
+    private List<TaskInfo> taskList;
+
+    // 嵌套类:服务单信息
+    @Data
+    public static class TaskInfo {
+        /**
+         * 服务单id
+         */
+        private String taskinfoid;
+
+        /**
+         * 服务单号
+         */
+        private String taskNo;
+
+        private String inData;
+
+    }
+
+
+
+}

+ 88 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/mq/message/PayChargeEventMessage.java

@@ -0,0 +1,88 @@
+package cn.start.tz.module.pressure2.mq.message;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class PayChargeEventMessage {
+
+    /**
+     * 费用类型 (1.委托服务费 2.法定费用)
+     */
+    private Integer chargeType;
+
+    /**
+     * 费用事件 (1.缴费 2.解除缴费)
+     */
+    private Integer eventType;
+
+    /**
+     * 服务单集合
+     */
+    private String taskList;
+    //private List<TaskInfo> taskList;
+
+    /**
+     * 缴费时间 (格式:yyyy-MM-dd HH:mm:ss)
+     */
+    private String chargeTime;  // 实际使用时建议 String 或 LocalDateTime
+
+    // 嵌套类:服务单信息
+    @Data
+    public static class TaskInfo {
+        /**
+         * 服务单id
+         */
+        private String taskinfoid;
+
+        /**
+         * 服务单号
+         */
+        private String taskNo;
+
+        /**
+         * 本次缴费金额
+         */
+        private BigDecimal chargeAmount;  // 推荐改为 BigDecimal
+
+        /**
+         * 缴费单位社会信用代码
+         */
+        private String payUnitCode;  // 推荐改为 String
+
+        /**
+         * 缴费单位名称
+         */
+        private String payUnitName;
+
+        /**
+         * 客户开户行
+         */
+        private String payUnitBank;
+
+        /**
+         * 客户银行账号
+         */
+        private String payUnitAccount;
+
+        /**
+         * 客户联系电话
+         */
+        private String phone;
+
+        /**
+         * 缴费方式 (1银联扫码支付,2现场缴费,3对公转账)
+         */
+        private Integer payType;
+
+
+
+        private String inData;
+
+    }
+
+
+
+}

+ 3 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderService.java

@@ -1,5 +1,6 @@
 package cn.start.tz.module.pressure2.service.boilertaskorder;
 
+import cn.start.tz.module.pressure2.api.taskorder.dto.UpdatePayStatusDTO;
 import cn.start.tz.module.pressure2.controller.admin.bpmtaskinfo.vo.BpmTaskRespVO;
 import cn.start.tz.module.pressure2.controller.admin.costfield.vo.CostFieldRespVO;
 import cn.start.tz.module.pressure2.controller.admin.equipboilerscheduling.vo.EquipBoilerSchedulingBoilersRespVO;
@@ -202,4 +203,6 @@ public interface BoilerTaskOrderService extends IService<BoilerTaskOrderDO>  {
     PageResult<AdminUserRespDTO> getRecheckUserPage(BoilerRecheckUserPageReqVO pageReqVO);
 
     Boolean generateInspectionPlan(MajorIssuesSubmitVO majorIssuesSubmitVO);
+
+    Boolean updatePayStatus(UpdatePayStatusDTO payInfo);
 }

+ 61 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderServiceImpl.java

@@ -9,6 +9,7 @@ import cn.start.tz.framework.common.exception.ErrorCode;
 import cn.start.tz.framework.common.exception.ServiceException;
 import cn.start.tz.framework.common.exception.enums.GlobalErrorCodeConstants;
 import cn.start.tz.framework.common.pojo.CommonResult;
+import cn.start.tz.framework.common.util.date.DateUtils;
 import cn.start.tz.framework.ip.core.Area;
 import cn.start.tz.framework.ip.core.utils.AreaUtils;
 import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
@@ -27,6 +28,7 @@ import cn.start.tz.module.member.api.templatesendlog.dto.TemplateSendLogDto;
 import cn.start.tz.module.member.api.templatesendlog.dto.TemplateSendLogRespDto;
 import cn.start.tz.module.member.api.user.MemberUserApi;
 import cn.start.tz.module.member.api.user.dto.MemberUserRespDTO;
+import cn.start.tz.module.pressure2.api.taskorder.dto.UpdatePayStatusDTO;
 import cn.start.tz.module.pressure2.constant.TemplateIdConstants;
 import cn.start.tz.module.pressure2.controller.admin.boilertaskorderitempart.vo.BoilerTaskOrderItemPartSaveReqVO;
 import cn.start.tz.module.pressure2.controller.admin.equipboilerscheduling.vo.BoilerDeleteTask;
@@ -6076,6 +6078,65 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         return true;
     }
 
+    @Override
+    public Boolean updatePayStatus(UpdatePayStatusDTO payInfo){
+        String orderNo = payInfo.getOrderNo();
+        BoilerTaskOrderDO boilerTaskOrderDO = boilerTaskOrderMapper.selectOne(new LambdaQueryWrapperX<BoilerTaskOrderDO>().
+                eq(BoilerTaskOrderDO::getOrderNo, orderNo), false);
+        if (boilerTaskOrderDO == null) {
+            log.error("任务单不存在");
+            return false;
+        }
+
+        // 取消支付
+        if (payInfo.getIsCancel() != null && payInfo.getIsCancel()) {
+            LambdaUpdateWrapper<BoilerTaskOrderDO> wrap = new LambdaUpdateWrapper<>();
+            wrap.eq(BoilerTaskOrderDO::getId, boilerTaskOrderDO.getId());
+
+            wrap.set(BoilerTaskOrderDO::getPaymentStatus, 0);
+            wrap.set(BoilerTaskOrderDO::getPayAmount, 0);
+            wrap.set(BoilerTaskOrderDO::getPayTime, null);
+            boilerTaskOrderMapper.update(wrap);
+            return true;
+        }
+
+        BoilerTaskOrderDO updateOrder = new BoilerTaskOrderDO();
+        updateOrder.setId(boilerTaskOrderDO.getId());
+        updateOrder.setPaymentStatus(1);
+        String chargeTime = payInfo.getChargeTime();
+        try {
+            LocalDateTime localDateTime = DateUtils.parseDateTimeWithMultipleFormats(chargeTime);
+            updateOrder.setPayTime(localDateTime);
+        } catch (Exception e) {
+            log.error("日期转换失败", e);
+            updateOrder.setPayTime(LocalDateTime.now());
+        }
+        try {
+            updateOrder.setPayAmount(payInfo.getChargeAmount());
+            if (payInfo.getChargeAmount() == null) {
+                updateOrder.setPayAmount(boilerTaskOrderDO.getActualAmount());
+            }
+
+        } catch (Exception e) {
+            log.error("payAmount 设置错误", e);
+        }
+
+        if (payInfo.getFeeType() != null) {
+            log.info("更新收费形式" + payInfo.getOrderNo());
+            updateOrder.setFeeType(payInfo.getFeeType());
+        }
+
+        boilerTaskOrderMapper.updateById(updateOrder);
+        //非合同收费并且不属于免征范围时结算回调后自动发放报告
+        if (Integer.valueOf(100).equals(boilerTaskOrderDO.getFeeType()) && (Integer.valueOf(200).equals(boilerTaskOrderDO.getFeeNature()) || boilerTaskOrderDO.getFeeNature() == null)) {
+            List<BoilerTaskOrderItemDO> taskOrderItemDOList = boilerTaskOrderItemMapper.selectList(new LambdaQueryWrapperX<BoilerTaskOrderItemDO>().
+                    eq(BoilerTaskOrderItemDO::getOrderId, boilerTaskOrderDO.getId()).
+                    ne(BoilerTaskOrderItemDO::getTaskStatus, TaskOrderStatusEnum.CANCEL.getStatus()));
+//            taskOrderIssueReportService.autoIssueTaskOrderReport(boilerTaskOrderDO, taskOrderItemDOList);
+        }
+        return true;
+    }
+
     @Override
     public PageResult<BoilerOrderItemPageRespVO> inspectionOpinionPage(BoilerTaskOrderPageReqVO pageReqVO) {
         //构建查询参数