From b06a2928f34758ccef05650108e2b02d03962a63 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 12 十二月 2025 14:09:36 +0800
Subject: [PATCH] yys 商机管理

---
 src/main/java/com/ruoyi/sales/mapper/BusinessDescriptionMapper.java         |   11 ++
 src/main/java/com/ruoyi/sales/controller/BusinessOpportunityController.java |   45 ++++++++++-
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java      |    7 -
 src/main/java/com/ruoyi/sales/pojo/CommonFile.java                          |    6 +
 src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java       |   16 ++-
 src/main/java/com/ruoyi/sales/controller/CommonFileController.java          |    4 -
 src/main/java/com/ruoyi/sales/pojo/BusinessOpportunity.java                 |   20 ++++
 src/main/java/com/ruoyi/sales/pojo/BusinessDescription.java                 |   72 ++++++++++++++++++
 8 files changed, 155 insertions(+), 26 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/controller/BusinessOpportunityController.java b/src/main/java/com/ruoyi/sales/controller/BusinessOpportunityController.java
index 7a4d02d..d614b9d 100644
--- a/src/main/java/com/ruoyi/sales/controller/BusinessOpportunityController.java
+++ b/src/main/java/com/ruoyi/sales/controller/BusinessOpportunityController.java
@@ -1,16 +1,23 @@
 package com.ruoyi.sales.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.sales.mapper.BusinessDescriptionMapper;
+import com.ruoyi.sales.pojo.BusinessDescription;
 import com.ruoyi.sales.pojo.BusinessOpportunity;
 import com.ruoyi.sales.service.BusinessOpportunityService;
+import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
 import io.jsonwebtoken.lang.Collections;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -27,23 +34,53 @@
     @Autowired
     private BusinessOpportunityService businessOpportunityService;
 
+    @Autowired
+    private BusinessDescriptionMapper BusinessDescriptionMapper;
+
+    @Autowired
+    private CommonFileServiceImpl commonFileService;
+
     @GetMapping("/listPage")
     @ApiOperation("鍟嗘満鍒楄〃")
     public AjaxResult listPage(Page page, BusinessOpportunity businessOpportunity) {
-        return AjaxResult.success(businessOpportunityService.listPage(page, businessOpportunity));
+        IPage<BusinessOpportunity> businessOpportunityIPage = businessOpportunityService.listPage(page, businessOpportunity);
+        businessOpportunityIPage.getRecords().forEach(item -> {
+            item.setBusinessCommonFiles(commonFileService.getFileList(item.getId(),9));
+            item.setBusinessDescription(BusinessDescriptionMapper.selectList(Wrappers.lambdaQuery(BusinessDescription.class)
+                    .eq(BusinessDescription::getBusinessOpportunityId, item.getId())));
+        });
+        return AjaxResult.success(businessOpportunityIPage);
     }
 
     @PostMapping("/add")
     @ApiOperation("娣诲姞鍟嗘満")
     @Log(title = "鍟嗘満绠$悊-娣诲姞鍟嗘満", businessType = BusinessType.INSERT)
-    public AjaxResult add(@RequestBody BusinessOpportunity businessOpportunity) {
-        return businessOpportunityService.save(businessOpportunity) ? success() : error();
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult add(@RequestBody BusinessOpportunity businessOpportunity) throws  Exception{
+        businessOpportunityService.save(businessOpportunity);
+        BusinessDescription businessDescription = new BusinessDescription();
+        BeanUtils.copyProperties(businessOpportunity, businessDescription);
+        businessDescription.setBusinessOpportunityId(businessOpportunity.getId());
+        // 杩佺Щ涓存椂鏂囦欢鍒版寮忔枃浠�
+        commonFileService.migrateTempFilesToFormal(businessOpportunity.getId(), businessOpportunity.getTempFileIds());
+        return BusinessDescriptionMapper.insert(businessDescription) > 0 ? success() : error();
+    }
+
+    @PostMapping("/addDescription")
+    @ApiOperation("娣诲姞鍟嗘満鎻忚堪")
+    @Log(title = "鍟嗘満绠$悊-娣诲姞鍟嗘満鎻忚堪", businessType = BusinessType.INSERT)
+    public AjaxResult addDescription(@RequestBody BusinessDescription businessDescription) throws  Exception{
+        // 杩佺Щ涓存椂鏂囦欢鍒版寮忔枃浠�
+        commonFileService.migrateTempFilesToFormal(businessDescription.getBusinessOpportunityId(), businessDescription.getTempFileIds());
+        return BusinessDescriptionMapper.insert(businessDescription) > 0 ? success() : error();
     }
 
     @PostMapping("/update")
     @ApiOperation("淇敼鍟嗘満")
     @Log(title = "鍟嗘満绠$悊-淇敼鍟嗘満", businessType = BusinessType.UPDATE)
-    public AjaxResult update(@RequestBody BusinessOpportunity businessOpportunity) {
+    public AjaxResult update(@RequestBody BusinessOpportunity businessOpportunity) throws  Exception{
+        // 杩佺Щ涓存椂鏂囦欢鍒版寮忔枃浠�
+        commonFileService.migrateTempFilesToFormal(businessOpportunity.getId(), businessOpportunity.getTempFileIds());
         return businessOpportunityService.updateById(businessOpportunity) ? success() : error();
     }
 
diff --git a/src/main/java/com/ruoyi/sales/controller/CommonFileController.java b/src/main/java/com/ruoyi/sales/controller/CommonFileController.java
index 37266a8..ecc4d18 100644
--- a/src/main/java/com/ruoyi/sales/controller/CommonFileController.java
+++ b/src/main/java/com/ruoyi/sales/controller/CommonFileController.java
@@ -33,9 +33,5 @@
         return toAjax(commonFileService.delCommonFileByIds(ids));
     }
 
-    public void migrateTempFilesToFormal(Long businessId, List<String> tempFileIds) throws IOException{
-
-    }
-
 
 }
diff --git a/src/main/java/com/ruoyi/sales/mapper/BusinessDescriptionMapper.java b/src/main/java/com/ruoyi/sales/mapper/BusinessDescriptionMapper.java
new file mode 100644
index 0000000..ba1ee61
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/mapper/BusinessDescriptionMapper.java
@@ -0,0 +1,11 @@
+package com.ruoyi.sales.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.sales.pojo.BusinessDescription;
+
+/**
+ * @author :yys
+ * @date : 2025/12/12 11:38
+ */
+public interface BusinessDescriptionMapper extends BaseMapper<BusinessDescription> {
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/BusinessDescription.java b/src/main/java/com/ruoyi/sales/pojo/BusinessDescription.java
new file mode 100644
index 0000000..881dad1
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/pojo/BusinessDescription.java
@@ -0,0 +1,72 @@
+package com.ruoyi.sales.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/12/12 11:36
+ */
+@Data
+@TableName("business_description")
+@ApiModel
+public class BusinessDescription {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "涓存椂鏂囦欢id")
+    private List<String> tempFileIds;
+    /**
+     * 搴忓彿
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "鍟嗘満涓昏〃id")
+    private Long businessOpportunityId;
+
+    @ApiModelProperty(value = "鐘舵��")
+    private String status;
+
+    @ApiModelProperty(value = "瀹㈡埛鎻忚堪")
+    private String description;
+
+    @ApiModelProperty(value = "褰曞叆浜�")
+    private String entryPerson;
+
+    @ApiModelProperty(value = "褰曞叆鏃ユ湡")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date entryDate;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "淇敼鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty(value = "绉熸埛ID")
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+
+
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/BusinessOpportunity.java b/src/main/java/com/ruoyi/sales/pojo/BusinessOpportunity.java
index 826c11a..d4313a1 100644
--- a/src/main/java/com/ruoyi/sales/pojo/BusinessOpportunity.java
+++ b/src/main/java/com/ruoyi/sales/pojo/BusinessOpportunity.java
@@ -10,6 +10,7 @@
 
 import java.time.LocalDateTime;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author :yys
@@ -21,6 +22,18 @@
 public class BusinessOpportunity extends DateQueryDto {
 
     private static final long serialVersionUID = 1L;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "闄勪欢")
+    private List<CommonFile> businessCommonFiles;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "涓存椂鏂囦欢id")
+    private List<String> tempFileIds;
+
+    @ApiModelProperty(value = "鍟嗘満鎻忚堪")
+    @TableField(exist = false)
+    private List<BusinessDescription> businessDescription;
     /**
      * 搴忓彿
      */
@@ -36,11 +49,12 @@
     @ApiModelProperty(value = "瀹㈡埛鍚嶇О")
     private String customerName;
 
+    @ApiModelProperty(value = "瀹㈡埛鎻忚堪")
+    @TableField(exist = false)
+    private String description;
+
     @ApiModelProperty(value = "鍟嗘満鏉ユ簮")
     private String businessSource;
-
-    @ApiModelProperty(value = "瀹㈡埛鎻忚堪")
-    private String description;
 
     @ApiModelProperty(value = "褰曞叆浜�")
     private String entryPerson;
diff --git a/src/main/java/com/ruoyi/sales/pojo/CommonFile.java b/src/main/java/com/ruoyi/sales/pojo/CommonFile.java
index 239fd0d..d4cabe4 100644
--- a/src/main/java/com/ruoyi/sales/pojo/CommonFile.java
+++ b/src/main/java/com/ruoyi/sales/pojo/CommonFile.java
@@ -1,6 +1,7 @@
 package com.ruoyi.sales.pojo;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.ruoyi.common.enums.FileNameType;
 import lombok.Data;
 
 import java.time.LocalDateTime;
@@ -27,9 +28,12 @@
     /** 鏂囦欢璺緞 */
     private String url;
 
-    /** 鍏宠仈琛� */
+    /** 鍏宠仈琛ㄧ被鍨婩ileNameType
+     * 1锛氶攢鍞� 2锛氶噰璐� 3锛氬彂绁� 4锛氶噰璐彴璐� 5锛氳閲忓櫒鍏峰彴璐� 6锛氳閲忓櫒鍏峰彴璐﹁褰� 7锛氬崗鍚屽鎵硅妭鐐瑰鏍� 8锛氬崗鍚屽鎵逛富鏁版嵁 9: 鍟嗘満
+     * */
     private Integer type;
 
+
     /** 鍒涘缓鏃堕棿 */
     @TableField(fill = FieldFill.INSERT)
     private LocalDateTime createTime;
diff --git a/src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java
index 06bd40e..ba680d8 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java
@@ -1,5 +1,6 @@
 package com.ruoyi.sales.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.other.mapper.TempFileMapper;
@@ -38,6 +39,13 @@
 
     @Value("${file.upload-dir}")
     private String uploadDir;
+
+    public List<CommonFile> getFileList(Long id,Integer type) {
+        LambdaQueryWrapper<CommonFile> commonFileLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        commonFileLambdaQueryWrapper.eq(CommonFile::getCommonId, id)
+                .eq(CommonFile::getType, type);
+        return list(commonFileLambdaQueryWrapper);
+    }
 
 
     @Override
@@ -122,13 +130,6 @@
             Path formalFilePath = formalDirPath.resolve(formalFilename);
 
             try {
-                // 鎵ц鏂囦欢杩佺Щ锛堜娇鐢ㄥ師瀛愭搷浣滅‘淇濆畨鍏ㄦ�э級
-//                Files.move(
-//                        Paths.get(tempFile.getTempPath()),
-//                        formalFilePath,
-//                        StandardCopyOption.REPLACE_EXISTING,
-//                        StandardCopyOption.ATOMIC_MOVE
-//                );
                 // 鍘熷瓙绉诲姩澶辫触锛屼娇鐢ㄥ鍒�+鍒犻櫎
                 Files.copy(Paths.get(tempFile.getTempPath()), formalFilePath, StandardCopyOption.REPLACE_EXISTING);
                 Files.deleteIfExists(Paths.get(tempFile.getTempPath()));
@@ -142,6 +143,7 @@
                 fileRecord.setCreateTime(LocalDateTime.now());
                 fileRecord.setType(tempFile.getType());
                 commonFileMapper.insert(fileRecord);
+                tempFileMapper.deleteById(tempFileId);
 
                 log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath);
             } catch (IOException e) {
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 6493d46..8b4f6ff 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -480,13 +480,6 @@
             Path formalFilePath = formalDirPath.resolve(formalFilename);
 
             try {
-                // 鎵ц鏂囦欢杩佺Щ锛堜娇鐢ㄥ師瀛愭搷浣滅‘淇濆畨鍏ㄦ�э級
-//                Files.move(
-//                        Paths.get(tempFile.getTempPath()),
-//                        formalFilePath,
-//                        StandardCopyOption.REPLACE_EXISTING,
-//                        StandardCopyOption.ATOMIC_MOVE
-//                );
                 // 鍘熷瓙绉诲姩澶辫触锛屼娇鐢ㄥ鍒�+鍒犻櫎
                 Files.copy(Paths.get(tempFile.getTempPath()), formalFilePath, StandardCopyOption.REPLACE_EXISTING);
                 Files.deleteIfExists(Paths.get(tempFile.getTempPath()));

--
Gitblit v1.9.3