Parcourir la source

Merge remote-tracking branch 'origin/master'

liuc il y a 3 mois
Parent
commit
57f18b7091
14 fichiers modifiés avec 578 ajouts et 2 suppressions
  1. 40 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkCustomerVisitItineraryDDO.java
  2. 37 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkCustomerVisitItineraryDO.java
  3. 34 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkCustomerVisitItineraryDVO.java
  4. 36 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkCustomerVisitItineraryVO.java
  5. 9 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/qry/BlinkCustomerVisitItineraryQry.java
  6. 31 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCustomerVisitItineraryDImpl.java
  7. 262 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCustomerVisitItineraryImpl.java
  8. 33 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/objectmapper/BlinkCustomerVisitItineraryMapper.java
  9. 16 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkCustomerVisitItineraryDRepository.java
  10. 24 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkCustomerVisitItineraryRepository.java
  11. 12 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkCustomerVisitItineraryDService.java
  12. 32 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkCustomerVisitItineraryService.java
  13. 10 0
      bound-link-api/blink-backend/src/main/resources/mapper/BlinkCustomerVisitItineraryRepositoryMapper.xml
  14. 2 2
      bound-link-api/sa-flow-api/src/main/java/com/cloud/sa/api/FormEngineController.java

+ 40 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkCustomerVisitItineraryDDO.java

@@ -0,0 +1,40 @@
+package com.wx.blink.backend.domain.dataobject;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/*客户拜访行程明细表*/
+@Data
+@TableName("blink_customer_visit_itinerary_d")
+public class BlinkCustomerVisitItineraryDDO implements Serializable {
+
+    @Schema(description = "id")
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    @Schema(description = "关联主表ID")
+    @TableField("pid")
+    private String pid;
+    @Schema(description = "到达城市")
+    @TableField("arrival_city")
+    private String arrivalCity;
+    @Schema(description = "到达日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @TableField("arrival_date")
+    private Date arrivalDate;
+    @Schema(description = "停留周期")
+    @TableField("duration")
+    private Double duration;
+    @Schema(description = "排序号")
+    @TableField("sort_no")
+    private Integer sortNo;
+
+}

+ 37 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkCustomerVisitItineraryDO.java

@@ -0,0 +1,37 @@
+package com.wx.blink.backend.domain.dataobject;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.wx.blink.base.common.domain.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/*客户拜访行程*/
+@Data
+@TableName("blink_customer_visit_itinerary")
+public class BlinkCustomerVisitItineraryDO extends BaseEntity {
+
+    @Schema(description = "id")
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    @Schema(description = "行程单名称")
+    @TableField("itinerary_name")
+    private String itineraryName;
+    @Schema(description = "状态(0:失败,1:成功)")
+    @TableField("status")
+    private Integer status;
+    @Schema(description = "周期")
+    @TableField("durations")
+    private Double durations;
+    @Schema(description = "到达城市")
+    @TableField("arrival_citys")
+    private String arrivalCitys;
+    @Schema(description = "附件")
+    @TableField("attachments")
+    private String attachments;
+
+}

+ 34 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkCustomerVisitItineraryDVO.java

@@ -0,0 +1,34 @@
+package com.wx.blink.backend.domain.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+/*客户拜访行程明细表*/
+@Data
+public class BlinkCustomerVisitItineraryDVO implements Serializable {
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "关联主表ID")
+    @TableField("pid")
+    private String pid;
+    @Schema(description = "到达城市")
+    @TableField("arrival_city")
+    private String arrivalCity;
+    @Schema(description = "到达日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @TableField("arrival_date")
+    private Date arrivalDate;
+    @Schema(description = "停留周期")
+    @TableField("duration")
+    private Double duration;
+    @Schema(description = "排序号")
+    @TableField("sort_no")
+    private Integer sortNo;
+
+}

+ 36 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkCustomerVisitItineraryVO.java

@@ -0,0 +1,36 @@
+package com.wx.blink.backend.domain.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.wx.blink.base.common.domain.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/*客户拜访行程*/
+@Data
+public class BlinkCustomerVisitItineraryVO extends BaseEntity {
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "行程单名称")
+    @TableField("itinerary_name")
+    private String itineraryName;
+    @Schema(description = "状态(0:失败,1:成功)")
+    @TableField("status")
+    private Integer status;
+    @Schema(description = "周期")
+    @TableField("durations")
+    private Double durations;
+    @Schema(description = "到达城市")
+    @TableField("arrival_citys")
+    private String arrivalCitys;
+    @Schema(description = "附件")
+    @TableField("attachments")
+    private String attachments;
+
+    @Schema(description = "明细")
+    private List<BlinkCustomerVisitItineraryDVO> visitItineraryDVOList;
+
+}

+ 9 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/qry/BlinkCustomerVisitItineraryQry.java

@@ -0,0 +1,9 @@
+package com.wx.blink.backend.domain.qry;
+
+import com.wx.blink.base.common.domain.PageParam;
+import lombok.Data;
+
+@Data
+public class BlinkCustomerVisitItineraryQry extends PageParam {
+
+}

+ 31 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCustomerVisitItineraryDImpl.java

@@ -0,0 +1,31 @@
+package com.wx.blink.backend.manager;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerVisitItineraryDDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerVisitItineraryDO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerVisitItineraryDVO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerVisitItineraryVO;
+import com.wx.blink.backend.domain.qry.BlinkCustomerVisitItineraryQry;
+import com.wx.blink.backend.objectmapper.BlinkCustomerVisitItineraryMapper;
+import com.wx.blink.backend.repository.BlinkCustomerVisitItineraryDRepository;
+import com.wx.blink.backend.repository.BlinkCustomerVisitItineraryRepository;
+import com.wx.blink.backend.service.IBlinkCustomerVisitItineraryDService;
+import com.wx.blink.backend.service.IBlinkCustomerVisitItineraryService;
+import com.wx.blink.base.common.domain.PageResult;
+import com.wx.blink.base.common.util.BlinkEntityUtil;
+import com.wx.blink.base.common.util.BlinkPageUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+@Service
+public class BlinkCustomerVisitItineraryDImpl extends ServiceImpl<BlinkCustomerVisitItineraryDRepository, BlinkCustomerVisitItineraryDDO> implements IBlinkCustomerVisitItineraryDService {
+
+
+
+}

+ 262 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCustomerVisitItineraryImpl.java

@@ -0,0 +1,262 @@
+package com.wx.blink.backend.manager;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.itextpdf.text.PageSize;
+import com.itextpdf.text.pdf.PdfDocument;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerVisitItineraryDDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerVisitItineraryDO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerVisitItineraryDVO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerVisitItineraryVO;
+import com.wx.blink.backend.domain.qry.BlinkCustomerVisitItineraryQry;
+import com.wx.blink.backend.objectmapper.BlinkCustomerVisitItineraryMapper;
+import com.wx.blink.backend.repository.BlinkCustomerVisitItineraryDRepository;
+import com.wx.blink.backend.repository.BlinkCustomerVisitItineraryRepository;
+import com.wx.blink.backend.service.IBlinkCustomerVisitItineraryDService;
+import com.wx.blink.backend.service.IBlinkCustomerVisitItineraryService;
+import com.wx.blink.base.common.domain.PageResult;
+import com.wx.blink.base.common.domain.RequestUser;
+import com.wx.blink.base.common.domain.ResponseDTO;
+import com.wx.blink.base.common.util.BlinkEntityUtil;
+import com.wx.blink.base.common.util.BlinkPageUtil;
+import com.wx.blink.base.common.util.BlinkRequestUtil;
+import com.wx.blink.base.module.support.file.domain.vo.FileUploadVO;
+import com.wx.blink.base.module.support.file.service.FileService;
+import com.wx.blink.base.module.support.pdf.PDFCommonGenerator;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.disk.DiskFileItem;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.io.*;
+import java.text.MessageFormat;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.itextpdf.text.*;
+import com.itextpdf.text.pdf.PdfWriter;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
+import org.xhtmlrenderer.pdf.ITextRenderer;
+
+
+@Service
+public class BlinkCustomerVisitItineraryImpl extends ServiceImpl<BlinkCustomerVisitItineraryRepository, BlinkCustomerVisitItineraryDO> implements IBlinkCustomerVisitItineraryService {
+
+    @Resource
+    private BlinkCustomerVisitItineraryRepository visitItineraryRepository;
+    @Resource
+    private BlinkCustomerVisitItineraryMapper visitItineraryMapper;
+    @Resource
+    private BlinkCustomerVisitItineraryDRepository visitItineraryDRepository;
+    @Resource
+    private IBlinkCustomerVisitItineraryDService visitItineraryDService;
+    @Resource
+    private FileService fileService;
+
+    @Override
+    public void addOrUpdate(BlinkCustomerVisitItineraryVO vo) {
+        BlinkCustomerVisitItineraryDO visitItineraryDO = visitItineraryMapper.customerVisitItineraryVOtoDomain(vo);
+        if (visitItineraryDO != null) {
+            String itineraryName = "";
+            String arrivalCitys = "";
+            Double durations = 0.0;
+            String attachments = "";
+            if (vo.getVisitItineraryDVOList() != null && !vo.getVisitItineraryDVOList().isEmpty()) {
+                itineraryName = vo.getVisitItineraryDVOList().get(0).getArrivalDate().toString() + "~"
+                        + vo.getVisitItineraryDVOList().get(vo.getVisitItineraryDVOList().size() - 1).getArrivalDate().toString();
+                attachments = createPdfAttachment(itineraryName,vo.getVisitItineraryDVOList());
+                int rowNum = 0;
+                for (BlinkCustomerVisitItineraryDVO visitItineraryDVO : vo.getVisitItineraryDVOList()) {
+                    rowNum++;
+                    arrivalCitys += visitItineraryDVO.getArrivalCity();
+                    if (rowNum < vo.getVisitItineraryDVOList().size()) {
+                        arrivalCitys += "、";
+                    }
+                    durations += visitItineraryDVO.getDuration();
+                }
+                visitItineraryDO.setItineraryName(itineraryName);
+                visitItineraryDO.setArrivalCitys(arrivalCitys);
+                visitItineraryDO.setDurations(durations);
+                visitItineraryDO.setAttachments(attachments);
+            }
+            //生成PDF
+
+            //有id更新,没有则新增
+            if (visitItineraryDO.getId() == null || visitItineraryDO.getId() == "") {
+                //创建人赋值
+                BlinkEntityUtil.setCreateInfo(visitItineraryDO);
+                this.save(visitItineraryDO);
+                //保存明细
+                if (vo.getVisitItineraryDVOList() != null && !vo.getVisitItineraryDVOList().isEmpty()) {
+                    for (BlinkCustomerVisitItineraryDVO visitItineraryDVO : vo.getVisitItineraryDVOList()) {
+                        BlinkCustomerVisitItineraryDDO visitItineraryDDO = visitItineraryMapper.customerVisitItineraryDVOtoDomain(visitItineraryDVO);
+                        visitItineraryDDO.setPid(visitItineraryDO.getId());
+                        visitItineraryDService.save(visitItineraryDDO);
+                    }
+                }
+            } else {
+                //更新人赋值
+                BlinkEntityUtil.setUpdatedInfo(visitItineraryDO);
+                this.updateById(visitItineraryDO);
+                //处理明细
+                Map<String, Object> delParam = new HashMap<>();
+                delParam.put("pid", visitItineraryDO.getId());
+                visitItineraryDService.removeByMap(delParam);
+                if (vo.getVisitItineraryDVOList() != null && !vo.getVisitItineraryDVOList().isEmpty()) {
+                    for (BlinkCustomerVisitItineraryDVO visitItineraryDVO : vo.getVisitItineraryDVOList()) {
+                        BlinkCustomerVisitItineraryDDO visitItineraryDDO = visitItineraryMapper.customerVisitItineraryDVOtoDomain(visitItineraryDVO);
+                        visitItineraryDDO.setPid(visitItineraryDO.getId());
+                        visitItineraryDService.save(visitItineraryDDO);
+                    }
+                }
+            }
+        }
+    }
+
+    @Override
+    public PageResult<BlinkCustomerVisitItineraryVO> visitItineraryQueryPage(BlinkCustomerVisitItineraryQry qry) {
+        Page<?> page = BlinkPageUtil.convert2PageQuery(qry);
+        List<BlinkCustomerVisitItineraryVO> list = visitItineraryRepository.visitItineraryQueryPage(page);
+        PageResult<BlinkCustomerVisitItineraryVO> pageResult = BlinkPageUtil.convert2PageResult(page, list);
+        return pageResult;
+    }
+
+    /**
+     * 生成pdf
+     */
+    public String createPdfAttachment(String itineraryName, List<BlinkCustomerVisitItineraryDVO> vos) {
+        try {
+            MultipartFile file = new CommonsMultipartFile(createBlankPdfFileItem("attachments", itineraryName + ".pdf",vos));
+            RequestUser requestUser = BlinkRequestUtil.getRequestUser();
+            ResponseDTO<FileUploadVO> uploadedfile = fileService.fileUpload(file, 1, requestUser);
+            return uploadedfile.getData().getFileKey();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 创建一个空的PDF字节数组
+     *
+     * @return 包含空PDF的字节数组
+     */
+    public byte[] createEmptyPdfBytes() {
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+
+        // 创建PDF文档
+        Document document = new Document();
+        try {
+            PdfWriter.getInstance(document, outputStream);
+            document.open();
+            // 不添加任何内容,创建空白PDF
+            document.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return outputStream.toByteArray();
+    }
+
+    /**
+     * 生成PDF文件流
+     *
+     * @param vos      PDF内容文本
+     * @param fileName 自定义文件名(不含.pdf扩展名)
+     * @return 包含PDF字节数组和文件名的结果对象
+     * @throws IOException
+     */
+    public byte[] generatePdf(List<BlinkCustomerVisitItineraryDVO> vos, String fileName) throws IOException {
+        // 1. 创建HTML内容(简单包装)
+        String htmlContent = wrapContentInHtml(vos);
+
+        // 2. 生成PDF
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        ITextRenderer renderer = new ITextRenderer();
+
+        try {
+            renderer.setDocumentFromString(htmlContent);
+            renderer.layout();
+            renderer.createPDF(outputStream);
+            return outputStream.toByteArray();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            outputStream.close();
+        }
+        return null;
+    }
+
+    /**
+     * 将纯文本包装为简单HTML
+     */
+    private String wrapContentInHtml(List<BlinkCustomerVisitItineraryDVO> vos) {
+        String result = "<!DOCTYPE html>" +
+                "<html>" +
+                "<head>" +
+                "<meta charset=\"UTF-8\">" +
+                "<style>" +
+                "body { font-family: SimSun; font-size: 14px; }" +
+                "h1 { color: #333; text-align: center; }" +
+                "</style>" +
+                "</head>" +
+                "<body>" +
+                "<h1>文档内容</h1>";
+        String content = "<div> 到达城市:{0}  到达日期:{1}  停留周期:{2}天 </div>";
+
+        for (BlinkCustomerVisitItineraryDVO vo : vos) {
+            result += MessageFormat.format(content, vo.getArrivalCity(), vo.getArrivalDate().toString(), vo.getDuration().toString());
+        }
+        result += "</body>" + "</html>";
+        return result;
+    }
+
+    /**
+     * 创建空白PDF的FileItem
+     *
+     * @param fieldName 表单字段名
+     * @param fileName  PDF文件名(如"blank.pdf")
+     * @return FileItem对象
+     */
+    public FileItem createBlankPdfFileItem(String fieldName, String fileName, List<BlinkCustomerVisitItineraryDVO> vos) {
+        // 1. 创建空白PDF字节数组
+        try {
+            byte[] pdfBytes = generatePdf(vos, fileName);
+            // 2. 创建DiskFileItem
+            DiskFileItem fileItem = new DiskFileItem(
+                    fieldName,                      // 表单字段名
+                    "application/pdf",               // 内容类型
+                    false,                           // 是否表单字段
+                    fileName,                        // 文件名
+                    1024,                            // 缓冲区大小
+                    new File(System.getProperty("java.io.tmpdir")) // 临时目录
+                    {
+                    }
+            );
+            // 3. 将PDF字节写入FileItem
+            try (OutputStream os = fileItem.getOutputStream()) {
+                os.write(pdfBytes);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            return fileItem;
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public File getAbsoluteFile(String uploadDir, String fileName) throws IOException {
+        File desc = new File(uploadDir + File.separator + fileName);
+
+        if (!desc.exists()) {
+            if (!desc.getParentFile().exists()) {
+                desc.getParentFile().mkdirs();
+            }
+        }
+        return desc;
+    }
+
+}

+ 33 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/objectmapper/BlinkCustomerVisitItineraryMapper.java

@@ -0,0 +1,33 @@
+package com.wx.blink.backend.objectmapper;
+
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerMarketTeamDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerVisitItineraryDDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerVisitItineraryDO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerMarketTeamVO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerVisitItineraryDVO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerVisitItineraryVO;
+import com.wx.blink.base.common.util.BlinkStringUtil;
+import org.mapstruct.Mapper;
+
+
+@Mapper(componentModel = "spring", imports = {BlinkStringUtil.class})
+public interface BlinkCustomerVisitItineraryMapper {
+
+    /**
+     * 客户拜访计划数据VO转do
+     *
+     * @param vo
+     * @return
+     */
+    BlinkCustomerVisitItineraryDO customerVisitItineraryVOtoDomain(BlinkCustomerVisitItineraryVO vo);
+    /**
+     * 客户拜访计划明细数据VO转do
+     *
+     * @param vo
+     * @return
+     */
+    BlinkCustomerVisitItineraryDDO customerVisitItineraryDVOtoDomain(BlinkCustomerVisitItineraryDVO vo);
+
+
+
+}

+ 16 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkCustomerVisitItineraryDRepository.java

@@ -0,0 +1,16 @@
+package com.wx.blink.backend.repository;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerVisitItineraryDDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerVisitItineraryDO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerVisitItineraryVO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface BlinkCustomerVisitItineraryDRepository extends BaseMapper<BlinkCustomerVisitItineraryDDO> {
+
+
+}

+ 24 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkCustomerVisitItineraryRepository.java

@@ -0,0 +1,24 @@
+package com.wx.blink.backend.repository;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerMarketTeamDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerVisitItineraryDO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerMarketTeamVO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerVisitItineraryVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface BlinkCustomerVisitItineraryRepository extends BaseMapper<BlinkCustomerVisitItineraryDO> {
+
+    /**
+     * 客户拜访行程查询
+     *
+     * @param page
+     * @return
+     */
+    List<BlinkCustomerVisitItineraryVO> visitItineraryQueryPage(Page<?> page);
+}

+ 12 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkCustomerVisitItineraryDService.java

@@ -0,0 +1,12 @@
+package com.wx.blink.backend.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerVisitItineraryDDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerVisitItineraryDO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerVisitItineraryVO;
+import com.wx.blink.backend.domain.qry.BlinkCustomerVisitItineraryQry;
+import com.wx.blink.base.common.domain.PageResult;
+
+
+public interface IBlinkCustomerVisitItineraryDService extends IService<BlinkCustomerVisitItineraryDDO> {
+}

+ 32 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkCustomerVisitItineraryService.java

@@ -0,0 +1,32 @@
+package com.wx.blink.backend.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerMarketTeamDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerVisitItineraryDDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerVisitItineraryDO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerMarketTeamVO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerVisitItineraryVO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerVisitPlanVO;
+import com.wx.blink.backend.domain.qry.BlinkCustomerVisitItineraryQry;
+import com.wx.blink.base.common.domain.PageResult;
+
+import java.util.List;
+
+
+public interface IBlinkCustomerVisitItineraryService extends IService<BlinkCustomerVisitItineraryDO> {
+    /**
+     * 拜访行程新增、更新
+     *
+     * @param vo
+     * @return
+     */
+    void addOrUpdate(BlinkCustomerVisitItineraryVO vo);
+
+    /**
+     * 拜访行程查询
+     *
+     * @param qry
+     * @return
+     */
+    PageResult<BlinkCustomerVisitItineraryVO>  visitItineraryQueryPage(BlinkCustomerVisitItineraryQry qry);
+}

+ 10 - 0
bound-link-api/blink-backend/src/main/resources/mapper/BlinkCustomerVisitItineraryRepositoryMapper.xml

@@ -0,0 +1,10 @@
+<?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.wx.blink.backend.repository.BlinkCustomerVisitItineraryRepository">
+    <select id="visitItineraryQueryPage" resultType="com.wx.blink.backend.domain.dto.BlinkCustomerVisitItineraryVO">
+        select a.*
+        from blink_customer_visit_itinerary a
+        where a.deleted_flag = '0'
+        order by a.create_time desc
+    </select>
+</mapper>

+ 2 - 2
bound-link-api/sa-flow-api/src/main/java/com/cloud/sa/api/FormEngineController.java

@@ -44,8 +44,8 @@ public class FormEngineController {
     /**
      * @return
      */
-    @PostMapping("/getFormLoadTemplate")
-    public StResult getFormLoadTemplate(@RequestBody FormLoadDataParam formLoadDataParam) {
+    @GetMapping("/getFormLoadTemplate")
+    public StResult getFormLoadTemplate( FormLoadDataParam formLoadDataParam) {
         RequestUser user = StUserInfo.getUser();
         CompletableFuture<StFormModule> formLoadTemplateFuture = CompletableFuture.supplyAsync(() -> {
             StUserInfo.setUser(user);