陈昶聿
2026-04-30 3d274e016ae6f40cea86254af6c6f32691978ab8
Merge branch 'master' into master-手术随访

# Conflicts:
# ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
已修改10个文件
已添加1个文件
413 ■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-ls.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskIsAbnormalStatistic.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java 149 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/SvyTaskTemplateTargetoptionMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -79,14 +79,14 @@
    @Autowired
    private ISysConfigService configService;
    @Autowired
    private RyTask ryTask;
    @Value("${spring.profiles.active}")
    private String active;
    @Autowired
    private RedisCache redisCache;
    @Autowired
    private RyTask ryTask;
    /**
     * æŸ¥è¯¢æ‚£è€…随访信息
@@ -741,9 +741,9 @@
        return serviceSubtaskService.getHeLibraryCount(heLibraryCountVO);
    }
    @PostMapping("/test")
    public void test() {
        ryTask.dealOutHospInfo();
        ryTask.longTaskSend();
    }
}
ruoyi-admin/src/main/resources/application-ls.yml
@@ -185,7 +185,7 @@
req_path: 8093
#localIP: https://wx.lihusmart.com
#丽水外链请求IP和端口号
localIP: https://221.12.19.26
localIP: https://lishuisf.health-y.cn
#获取患者信息URL(华卓提供)
hosp_info_url: http://esb-core-rest.wowjoy.cn/esb/exchange
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -38,14 +38,9 @@
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xddf.usermodel.chart.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFDataValidation;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFPicture;
import org.apache.poi.xssf.usermodel.XSSFShape;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.*;
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -1472,4 +1467,144 @@
            log.error("{}设置导出Excel文件名称异常,{}", fileName, e.getMessage());
        }
    }
//    public static void main(String[] args) {
//        // 1. åˆ›å»ºå·¥ä½œç°¿
//        try (XSSFWorkbook workbook = new XSSFWorkbook()) {
//            // 2. ç”ŸæˆæŸ±çж图 Sheet
//            createBarChartSheet(workbook);
//            // 3. ç”ŸæˆæŠ˜çº¿å›¾ Sheet
//            createLineChartSheet(workbook);
//            // 4. ç”Ÿæˆé¥¼çж图 Sheet
//            createPieChartSheet(workbook);
//
//            // 5. å¯¼å‡ºåˆ°æœ¬åœ°æ–‡ä»¶
//            try (FileOutputStream fos = new FileOutputStream("D:/图表导出.xlsx")) {
//                workbook.write(fos);
//                System.out.println("Excel å›¾è¡¨å¯¼å‡ºæˆåŠŸï¼è·¯å¾„ï¼šD:/图表导出.xlsx");
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
    // ==================== 1. åˆ›å»ºæŸ±çж图 Sheet ====================
    private static void createBarChartSheet(XSSFWorkbook workbook) {
        XSSFSheet sheet = workbook.createSheet("柱状图");
        writeChartData(sheet);
        XSSFDrawing drawing = sheet.createDrawingPatriarch();
        XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 3, 1, 12, 15);
        XSSFChart chart = drawing.createChart(anchor);
        chart.setTitleText("产品销量-柱状图");
        chart.setTitleOverlay(false);
        // åæ ‡è½´
        XDDFCategoryAxis xAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
        XDDFValueAxis yAxis = chart.createValueAxis(AxisPosition.LEFT);
        yAxis.setCrosses(AxisCrosses.AUTO_ZERO);
        // æ•°æ®èŒƒå›´ï¼šåˆ†ç±»A2:A6,数值B2:B6
        XDDFDataSource<String> cat = XDDFDataSourcesFactory.fromStringCellRange(sheet,
                new CellRangeAddress(1, 5, 0, 0));
        XDDFNumericalDataSource<Double> val = XDDFDataSourcesFactory.fromNumericCellRange(sheet,
                new CellRangeAddress(1, 5, 1, 1));
        // æŸ±çŠ¶å›¾æ•°æ®
        XDDFBarChartData barChart = (XDDFBarChartData) chart.createData(ChartTypes.BAR, xAxis, yAxis);
        XDDFBarChartData.Series series = (XDDFBarChartData.Series) barChart.addSeries(cat, val);
        series.setTitle("销量", null);
        barChart.setBarDirection(BarDirection.COL);
        // ç»˜åˆ¶ï¼ˆå…³é”®ï¼šç¼ºå¤±å°±ä¸æ˜¾ç¤ºå›¾è¡¨ï¼‰
        chart.plot(barChart);
    }
    // ==================== 2. åˆ›å»ºæŠ˜çº¿å›¾ Sheet ====================
    private static void createLineChartSheet(XSSFWorkbook workbook) {
        XSSFSheet sheet = workbook.createSheet("折线图");
        // å†™å…¥è¡¨å¤´ + æ•°æ®
        writeChartData(sheet);
        // ç»˜å›¾åŒºåŸŸ
        XSSFDrawing drawing = sheet.createDrawingPatriarch();
        XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 10, 20);
        XSSFChart chart = drawing.createChart(anchor);
        // å›¾è¡¨æ ‡é¢˜
        chart.setTitleText("月度销售额折线图");
        chart.setTitleOverlay(false);
        // å›¾ä¾‹
        XDDFChartLegend legend = chart.getOrAddLegend();
        legend.setPosition(LegendPosition.TOP_RIGHT);
        // X轴、Yè½´
        XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
        bottomAxis.setTitle("月份");
        XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
        leftAxis.setTitle("销售额(万元)");
        // æ•°æ®èŒƒå›´
        XDDFDataSource<String> months = XDDFDataSourcesFactory.fromStringCellRange(sheet, new CellRangeAddress(0, 5, 0, 0));
        XDDFNumericalDataSource<Double> values = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(0, 5, 1, 1));
        // åˆ›å»ºæŠ˜çº¿å›¾
        XDDFLineChartData lineData = (XDDFLineChartData) chart.createData(ChartTypes.LINE, bottomAxis, leftAxis);
        XDDFLineChartData.Series series = (XDDFLineChartData.Series) lineData.addSeries(months, values);
        series.setTitle("销售额", null);
        series.setMarkerStyle(MarkerStyle.CIRCLE); // æ˜¾ç¤ºåœ†ç‚¹
        chart.plot(lineData);
    }
    // ========== æ–°å¢žï¼šé¥¼çж图 ==========
    private static void createPieChartSheet(XSSFWorkbook workbook) {
        XSSFSheet sheet = workbook.createSheet("饼状图");
        writeChartData(sheet);
        XSSFDrawing drawing = sheet.createDrawingPatriarch();
        XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 3, 1, 12, 15);
        XSSFChart chart = drawing.createChart(anchor);
        chart.setTitleText("产品占比-饼状图");
        chart.setTitleOverlay(false);
        // é¥¼å›¾ä¸éœ€è¦XYè½´
        XDDFDataSource<String> cat = XDDFDataSourcesFactory.fromStringCellRange(sheet,
                new CellRangeAddress(1, 5, 0, 0));
        XDDFNumericalDataSource<Double> val = XDDFDataSourcesFactory.fromNumericCellRange(sheet,
                new CellRangeAddress(1, 5, 1, 1));
        // é¥¼å›¾æ•°æ®
        XDDFPieChartData pieChart = (XDDFPieChartData) chart.createData(ChartTypes.PIE, null, null);
        pieChart.addSeries(cat, val);
        chart.plot(pieChart);
    }
    // ==================== å…¬å…±æ–¹æ³•:写入图表数据 ====================
    private static void writeChartData(XSSFSheet sheet) {
        Object[][] data = {
                {"分类", "数值"},
                {"产品A", 35},
                {"产品B", 28},
                {"产品C", 42},
                {"产品D", 19},
                {"产品E", 26}
        };
        int rowIdx = 0;
        for (Object[] rows : data) {
            Row row = sheet.createRow(rowIdx++);
            int cellIdx = 0;
            for (Object val : rows) {
                if (val instanceof String) {
                    row.createCell(cellIdx++).setCellValue((String) val);
                } else if (val instanceof Number) {
                    row.createCell(cellIdx++).setCellValue(((Number) val).doubleValue());
                }
            }
        }
        sheet.autoSizeColumn(0);
        sheet.autoSizeColumn(1);
    }
}
smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java
@@ -44,6 +44,7 @@
    /**
     * å®Œæˆæ—¶é—´
     */
    @Excel(name = " å®Œæˆæ—¶é—´ ", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "完成时间")
    private Date finishtime;
smartor/src/main/java/com/smartor/domain/ServiceSubtaskIsAbnormalStatistic.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.smartor.domain;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
 * å„病区随访统计比例
 *
 * @author ruoyi
 * @date 2024-12-11
 */
@ApiModel(value = "ServiceSubtaskStatistic", description = "各病区随访统计比例")
@Data
public class ServiceSubtaskIsAbnormalStatistic implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "科室病区")
    private Integer statisticaltype;
    @ApiModelProperty(value = "出院病区编号")
    private String leavehospitaldistrictcode;
    @ApiModelProperty(value = "出院病区名称")
    @Excel(name = " å‡ºé™¢ç—…区名称 ")
    private String leavehospitaldistrictname;
    @ApiModelProperty(value = "出院科室编号")
    private String deptcode;
    @ApiModelProperty(value = "出院科室名称")
    @Excel(name = " å‡ºé™¢ç—…区名称 ")
    private String deptname;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty(value = "性别 1男  2女")
    private Long sex;
    @ApiModelProperty(value = "异常人数0-10岁")
    private Long abnormalCount010 = 0L;
    @ApiModelProperty(value = "异常人数10-20岁")
    private Long abnormalCount1020 = 0L;
    @ApiModelProperty(value = "异常人数20-30岁")
    private Long abnormalCount2030 = 0L;
    @ApiModelProperty(value = "异常人数30-40岁")
    private Long abnormalCount3040 = 0L;
    @ApiModelProperty(value = "异常人数40-50岁")
    private Long abnormalCount4050 = 0L;
    @ApiModelProperty(value = "异常人数50-60岁")
    private Long abnormalCount5060 = 0L;
    @ApiModelProperty(value = "异常人数60-70岁")
    private Long abnormalCount6070 = 0L;
    @ApiModelProperty(value = "异常人数70-80岁")
    private Long abnormalCount7090 = 0L;
    @ApiModelProperty(value = "异常人数80岁以上")
    private Long abnormalCount80More = 0L;
}
smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java
@@ -136,6 +136,9 @@
    @ApiModelProperty(value = "首次随访人工详情")
    private List<ServiceSubtask> manualInfo;
    @ApiModelProperty(value = "首次随访语音详情")
    private List<ServiceSubtask> voiceInfo;
    @ApiModelProperty(value = "首次随访短信详情")
    private List<ServiceSubtask> smsInfo;
@@ -156,6 +159,9 @@
    @ApiModelProperty(value = "再次随访人工详情")
    private List<ServiceSubtask> manualAgainInfo;
    @ApiModelProperty(value = "再次随访语音详情")
    private List<ServiceSubtask> voiceAgainInfo;
    @ApiModelProperty(value = "再次随访短信详情")
    private List<ServiceSubtask> smsAgainInfo;
@@ -178,6 +184,10 @@
    @ApiModelProperty(value = "首次人工")
    @Excel(name = " é¦–次人工 ")
    private Long manual = 0L;
    @ApiModelProperty(value = "首次语音")
    @Excel(name = " é¦–次语音 ")
    private Long voice = 0L;
    @ApiModelProperty(value = "首次短信")
    @Excel(name = " é¦–次短信 ")
@@ -214,10 +224,13 @@
    @Excel(name = " äºŒæ¬¡äººå·¥ ")
    private Long manualAgain = 0L;
    @ApiModelProperty(value = "二次语音")
    @Excel(name = " äºŒæ¬¡è¯­éŸ³ ")
    private Long voiceAgain = 0L;
    @ApiModelProperty(value = "二次短信")
    @Excel(name = " äºŒæ¬¡çŸ­ä¿¡ ")
    private Long smsAgain = 0L;
    @Excel(name = " äºŒæ¬¡å¾®ä¿¡ ")
    @ApiModelProperty(value = "二次微信")
    private Long weChatAgain = 0L;
smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java
@@ -7,6 +7,7 @@
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
@@ -677,6 +678,7 @@
     * å¼€å§‹å‡ºé™¢æ—¥æœŸ
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "开始出院日期")
    private Date startOutHospTime;
@@ -684,6 +686,7 @@
     * å¼€å§‹å‘送日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "开始发送日期")
    private Date startSendDateTime;
@@ -691,6 +694,7 @@
     * ç»“束发送日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "结束发送日期")
    private Date endSendDateTime;
@@ -698,6 +702,7 @@
     * ç»“束出院日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "结束出院日期")
    private Date endOutHospTime;
smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -137,6 +137,9 @@
    //导出随访
    public List<ServiceSubtaskStatistic> getSfStatisticsExport(ServiceSubtaskCountReq serviceSubtaskCountReq);
    //导出随访-异常
    public List<ServiceSubtaskIsAbnormalStatistic> getSfStatisticsIsAbnormalExport(ServiceSubtaskCountReq serviceSubtaskCountReq);
    public List<ServiceSubtaskStatistic> getSfStatisticsJoy(ServiceSubtaskCountReq serviceSubtaskCountReq);
    public List<ServiceSubtaskCount> getSfStatisticsJoydetails(ServiceSubtaskCountReq serviceSubtaskCountReq);
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -457,7 +457,9 @@
            //将当前发送状态改成9完成
            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
            serviceSubtaskPreachform.setPreachform(serviceSubtaskList.get(0).getCurrentPreachform());
            }
            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
            List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
@@ -900,7 +902,7 @@
        }
        //判断一下当前的问题是不是满意度问题,并且dutyDeptCode是否有值,并且选项是不是异常选项,如果全符合,则往满意度问题异常表新增
        if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getDutyDeptCode()) && 1 == stt.getIsabnormal()) {
        if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getDutyDeptCode()) && stt != null && 1 == stt.getIsabnormal()) {
            isabnormalFlag = 1L;
            ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace();
            subtaskDetailTrace.setDetailId(serviceSubtaskDetail.getId());
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -2477,7 +2477,7 @@
        return jsRates;
    }
    @Override
    public List<ServiceSubtaskStatistic> getSfStatisticsExport(ServiceSubtaskCountReq serviceSubtaskCountReq) {
        List<ServiceSubtaskStatistic> sfStatistics = getSfStatistics(serviceSubtaskCountReq);
        // æ·»åŠ æ€»è®¡è¡Œ
@@ -2489,6 +2489,12 @@
        }
        return sfStatistics;
    }
    @Override
    public List<ServiceSubtaskIsAbnormalStatistic> getSfStatisticsIsAbnormalExport(ServiceSubtaskCountReq serviceSubtaskCountReq){
        return null;
    }
    /**
@@ -2703,6 +2709,8 @@
            List<ServiceSubtask> followUpFailInfo = new ArrayList<>();
            //记录首次随访人工详情
            List<ServiceSubtask> manualInfo = new ArrayList<>();
            //记录首次随访语音详情
            List<ServiceSubtask> voiceInfo = new ArrayList<>();
            //记录首次随访短信详情
            List<ServiceSubtask> smsInfo = new ArrayList<>();
            //记录首次随访微信详情
@@ -2716,11 +2724,13 @@
            List<ServiceSubtask> followUpSuccessAgainInfo = new ArrayList<>();
            //记录再次随访失败详情
            List<ServiceSubtask> followUpFailAgainInfo = new ArrayList<>();
            //记录首次随访人工详情
            //记录再次随访人工详情
            List<ServiceSubtask> manualAgainInfo = new ArrayList<>();
            //记录首次随访短信详情
            //记录再次随访语音详情
            List<ServiceSubtask> voiceAgainInfo = new ArrayList<>();
            //记录再次随访短信详情
            List<ServiceSubtask> smsAgainInfo = new ArrayList<>();
            //记录首次随访微信详情
            //记录再次随访微信详情
            List<ServiceSubtask> wechatAgainInfo = new ArrayList<>();
            for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
@@ -2765,17 +2775,22 @@
                            followUpSuccessInfo.add(serviceSubtask);
                        }
                        //首次随访人工 (不统计不执行)
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("1")) {
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                            serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                            manualInfo.add(serviceSubtask);
                        }
                        //首次随访语音 (不统计不执行)
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
                            serviceSubtaskStatistic.setVoice(serviceSubtaskStatistic.getVoice() + 1L);
                            voiceInfo.add(serviceSubtask);
                        }
                        //首次随访短信(不统计不执行)
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("4")) {
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                            serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                            smsInfo.add(serviceSubtask);
                        }
                        //首次随访微信(不统计不执行)
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("5")) {
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                            serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                            wechatInfo.add(serviceSubtask);
                        }
@@ -2786,17 +2801,22 @@
                            followUpSuccessInfo.add(serviceSubtask);
                        }
                        //首次随访人工 (统计不执行)
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                            serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                            manualInfo.add(serviceSubtask);
                        }
                        //首次随访语音 (统计不执行)
                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
                            serviceSubtaskStatistic.setVoice(serviceSubtaskStatistic.getVoice() + 1L);
                            voiceInfo.add(serviceSubtask);
                        }
                        //首次随访短信(统计不执行)
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                            serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                            smsInfo.add(serviceSubtask);
                        }
                        //首次随访微信(统计不执行)
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                            serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                            wechatInfo.add(serviceSubtask);
                        }
@@ -2838,17 +2858,22 @@
                            followUpSuccessAgainInfo.add(serviceSubtask);
                        }
                        //再次随访人工(不统计不执行)
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("1")) {
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                            serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                            manualAgainInfo.add(serviceSubtask);
                        }
                        //再次随访语音(不统计不执行)
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
                            serviceSubtaskStatistic.setVoiceAgain(serviceSubtaskStatistic.getVoiceAgain() + 1L);
                            voiceAgainInfo.add(serviceSubtask);
                        }
                        //再次随访短信(不统计不执行)
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("4")) {
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                            serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                            smsAgainInfo.add(serviceSubtask);
                        }
                        //再次随访微信(不统计不执行)
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("5")) {
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                            serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                            wechatAgainInfo.add(serviceSubtask);
                        }
@@ -2859,17 +2884,22 @@
                            followUpSuccessAgainInfo.add(serviceSubtask);
                        }
                        //再次随访人工(统计不执行)
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                            serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                            manualAgainInfo.add(serviceSubtask);
                        }
                        //再次随访语音(统计不执行)
                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
                            serviceSubtaskStatistic.setVoiceAgain(serviceSubtaskStatistic.getVoiceAgain() + 1L);
                            voiceAgainInfo.add(serviceSubtask);
                        }
                        //再次随访短信(统计不执行)
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                            serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                            smsAgainInfo.add(serviceSubtask);
                        }
                        //再次随访微信(统计不执行)
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                            serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                            wechatAgainInfo.add(serviceSubtask);
                        }
@@ -2918,6 +2948,8 @@
            serviceSubtaskStatistic.setFollowUpFailInfo(followUpFailInfo);
            //记录首次随访人工详情
            serviceSubtaskStatistic.setManualInfo(manualInfo);
            //记录首次随访语音详情
            serviceSubtaskStatistic.setVoiceInfo(voiceInfo);
            //记录首次随访短信详情
            serviceSubtaskStatistic.setSmsInfo(smsInfo);
            //记录首次随访微信详情
@@ -2932,6 +2964,8 @@
            serviceSubtaskStatistic.setFollowUpFailAgainInfo(followUpFailAgainInfo);
            //记录再次随访人工详情
            serviceSubtaskStatistic.setManualAgainInfo(manualAgainInfo);
            //记录再次随访语音详情
            serviceSubtaskStatistic.setVoiceAgainInfo(voiceAgainInfo);
            //记录再次随访短信详情
            serviceSubtaskStatistic.setSmsAgainInfo(smsAgainInfo);
            //记录再次随访微信详情
@@ -2974,6 +3008,8 @@
        List<ServiceSubtask> followUpFailInfo = new ArrayList<>();
        //记录首次随访人工详情
        List<ServiceSubtask> manualInfo = new ArrayList<>();
        //记录首次随访语音详情
        List<ServiceSubtask> voiceInfo = new ArrayList<>();
        //记录首次随访短信详情
        List<ServiceSubtask> smsInfo = new ArrayList<>();
        //记录首次随访微信详情
@@ -3021,17 +3057,22 @@
                        followUpSuccessInfo.add(serviceSubtask);
                    }
                    //首次随访人工 (不统计不执行)
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("1")) {
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                        serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                        manualInfo.add(serviceSubtask);
                    }
                    //首次随访语音 (不统计不执行)
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
                        serviceSubtaskStatistic.setVoice(serviceSubtaskStatistic.getVoice() + 1L);
                        voiceInfo.add(serviceSubtask);
                    }
                    //首次随访短信(不统计不执行)
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("4")) {
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                        serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                        smsInfo.add(serviceSubtask);
                    }
                    //首次随访微信(不统计不执行)
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("5")) {
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                        serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                        wechatInfo.add(serviceSubtask);
                    }
@@ -3042,17 +3083,22 @@
                        followUpSuccessInfo.add(serviceSubtask);
                    }
                    //首次随访人工 (统计不执行)
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                        serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                        manualInfo.add(serviceSubtask);
                    }
                    //首次随访语音 (统计不执行)
                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
                        serviceSubtaskStatistic.setVoice(serviceSubtaskStatistic.getVoice() + 1L);
                        voiceInfo.add(serviceSubtask);
                    }
                    //首次随访短信(统计不执行)
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                        serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                        smsInfo.add(serviceSubtask);
                    }
                    //首次随访微信(统计不执行)
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                        serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                        wechatInfo.add(serviceSubtask);
                    }
@@ -3101,6 +3147,8 @@
        serviceSubtaskStatistic.setFollowUpFailInfo(followUpFailInfo);
        //记录首次随访人工详情
        serviceSubtaskStatistic.setManualInfo(manualInfo);
        //记录首次随访语音详情
        serviceSubtaskStatistic.setVoiceInfo(voiceInfo);
        //记录首次随访短信详情
        serviceSubtaskStatistic.setSmsInfo(smsInfo);
        //记录首次随访微信详情
@@ -3142,6 +3190,8 @@
        List<ServiceSubtask> followUpFailAgainInfo = new ArrayList<>();
        //记录再次随访人工详情
        List<ServiceSubtask> manualAgainInfo = new ArrayList<>();
        //记录再次随访语音详情
        List<ServiceSubtask> voiceAgainInfo = new ArrayList<>();
        //记录再次随访短信详情
        List<ServiceSubtask> smsAgainInfo = new ArrayList<>();
        //记录再次随访微信详情
@@ -3189,17 +3239,22 @@
                        followUpSuccessAgainInfo.add(serviceSubtask);
                    }
                    //再次随访人工(不统计不执行)
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("1")) {
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                        serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                        manualAgainInfo.add(serviceSubtask);
                    }
                    //再次随访语音(不统计不执行)
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
                        serviceSubtaskStatistic.setVoiceAgain(serviceSubtaskStatistic.getVoiceAgain() + 1L);
                        voiceAgainInfo.add(serviceSubtask);
                    }
                    //再次随访短信(不统计不执行)
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("4")) {
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                        serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                        smsAgainInfo.add(serviceSubtask);
                    }
                    //再次随访微信(不统计不执行)
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("5")) {
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                        serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                        wechatAgainInfo.add(serviceSubtask);
                    }
@@ -3210,17 +3265,22 @@
                        followUpSuccessAgainInfo.add(serviceSubtask);
                    }
                    //再次随访人工(统计不执行)
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                        serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                        manualAgainInfo.add(serviceSubtask);
                    }
                    //再次随访语音(统计不执行)
                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
                        serviceSubtaskStatistic.setVoiceAgain(serviceSubtaskStatistic.getVoiceAgain() + 1L);
                        voiceAgainInfo.add(serviceSubtask);
                    }
                    //再次随访短信(统计不执行)
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                        serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                        smsAgainInfo.add(serviceSubtask);
                    }
                    //再次随访微信(统计不执行)
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                        serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                        wechatAgainInfo.add(serviceSubtask);
                    }
@@ -3269,6 +3329,8 @@
        serviceSubtaskStatistic.setFollowUpFailAgainInfo(followUpFailAgainInfo);
        //记录再次随访人工详情
        serviceSubtaskStatistic.setManualAgainInfo(manualAgainInfo);
        //记录再次随访语音详情
        serviceSubtaskStatistic.setVoiceAgainInfo(voiceAgainInfo);
        //记录再次随访短信详情
        serviceSubtaskStatistic.setSmsAgainInfo(smsAgainInfo);
        //记录再次随访微信详情
@@ -3329,13 +3391,13 @@
                } else {
                    serviceSubtaskStatistic.setFollowUpRate("0.00%");
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                    serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                    serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                    serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
@@ -3361,13 +3423,13 @@
                } else {
                    serviceSubtaskStatistic.setFollowUpRateAgain("0.00%");
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                    serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                    serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                    serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
@@ -3447,13 +3509,13 @@
                } else {
                    serviceSubtaskStatistic.setFollowUpRate("0.00%");
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                    serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                    serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                    serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
@@ -3479,13 +3541,13 @@
                } else {
                    serviceSubtaskStatistic.setFollowUpRateAgain("0.00%");
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                    serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                    serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                    serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                }
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
@@ -3870,13 +3932,18 @@
            serviceSubtaskPreachform1.setRemark(remark);
            serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
            //如果当前的preachform已经是最后一个了,那直接将serviceSubtask的sendstate状态改成5就行了(全失败了)
            if (serviceSubtaskPreachform1.getSort() == spSize.size() && failSendstate.equals("4")) {
                serviceSubtask.setCurrentPreachform(preachform);
                serviceSubtask.setSendstate(5L);
                serviceSubtask.setRemark("所有发送方式均未获取结果,任务失败");
                serviceSubtask.setRemark(remark + ";所有发送方式均未获取结果,任务失败");
                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                return true;
            }else {
                //加入目前补偿里的 remark
                serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + remark : remark);
                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
            }
        }
smartor/src/main/resources/mapper/smartor/SvyTaskTemplateTargetoptionMapper.xml
@@ -162,7 +162,7 @@
            <if test="prompt != null">prompt,</if>
            <if test="sendTaskid != null">send_taskid,</if>
            <if test="sendTaskname != null">send_taskname,</if>
            <if test="defaultValue != null">default_value,</if>
            <if test="defaultValue != null">default_value</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="taskid != null">#{taskid},</if>
@@ -202,7 +202,7 @@
            <if test="score != null">#{score},</if>
            <if test="prompt != null">#{prompt},</if>
            <if test="sendTaskid != null">#{sendTaskid},</if>
            <if test="sendTaskname != null">#{sendTaskname}</if>
            <if test="sendTaskname != null">#{sendTaskname},</if>
            <if test="defaultValue != null">#{defaultValue}</if>
        </trim>
    </insert>