From e384ef51dcc77c946adb94fa11855e49a369dde7 Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Tue, 3 Jun 2025 14:26:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(sip):=20=E6=B7=BB=E5=8A=A0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E9=85=8D=E7=BD=AE=E4=BF=A1=E6=81=AF=E5=92=8C=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=97=A5=E5=BF=97=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增订单配置信息相关接口和服务实现 - 添加订单文件日志相关接口和服务实现 - 在订单信息中增加配置文件和合同文件列表 - 优化文件上传逻辑,支持配置器导入 --- .../src/main/resources/application-prod.yml | 1 + .../src/main/resources/application.yml | 2 +- .../common/utils/file/FileUploadUtils.java | 5 +- .../sip/controller/OrderInfoController.java | 1 - .../ProjectOrderInfoController.java | 89 ++++++++++ .../sip/domain/ProjectOrderConfigInfo.java | 89 ++++++++++ .../ruoyi/sip/domain/ProjectOrderFileLog.java | 65 +++++++ .../ruoyi/sip/domain/ProjectOrderInfo.java | 3 + .../mapper/ProjectOrderConfigInfoMapper.java | 64 +++++++ .../sip/mapper/ProjectOrderFileLogMapper.java | 65 +++++++ .../IProjectOrderConfigInfoService.java | 66 +++++++ .../service/IProjectOrderFileLogService.java | 65 +++++++ .../ProjectOrderConfigInfoServiceImpl.java | 163 ++++++++++++++++++ .../impl/ProjectOrderFileLogServiceImpl.java | 105 +++++++++++ .../impl/ProjectOrderInfoServiceImpl.java | 14 +- .../sip/ProjectOrderConfigInfoMapper.xml | 138 +++++++++++++++ .../mapper/sip/ProjectOrderFileLogMapper.xml | 96 +++++++++++ 17 files changed, 1027 insertions(+), 4 deletions(-) create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderConfigInfo.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderFileLog.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderConfigInfoMapper.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderFileLogMapper.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOrderConfigInfoService.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOrderFileLogService.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderConfigInfoServiceImpl.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderFileLogServiceImpl.java create mode 100644 ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderConfigInfoMapper.xml create mode 100644 ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderFileLogMapper.xml diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 97c2b144..d2ba4715 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -1,5 +1,6 @@ ruoyi: demoEnabled: false + profile: /home/application/uploadPath excelTemplate: /home/application/excelTemplate server: # 服务器的HTTP端口,默认为80 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 2a2f3932..22375378 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -9,7 +9,7 @@ ruoyi: # 实例演示开关 demoEnabled: true # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) - profile: D:\ruoyi\uploadPath + profile: D:\ruoyi\uploadPath\oms # 获取ip地址开关 addressEnabled: false # 开发环境配置 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java index 8de4c66d..aed81bbd 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java @@ -144,7 +144,10 @@ public class FileUploadUtils { int dirLastIndex = RuoYiConfig.getProfile().length() + 1; String currentDir = StringUtils.substring(uploadDir, dirLastIndex); - return Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName; + return StringUtils.isNotEmpty(currentDir) ? + Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName + : Constants.RESOURCE_PREFIX + "/" + fileName + ; } /** diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OrderInfoController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OrderInfoController.java index 1dd27887..68b6eb56 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OrderInfoController.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/OrderInfoController.java @@ -185,7 +185,6 @@ public class OrderInfoController extends BaseController public void listExport(HttpServletRequest request, HttpServletResponse response) { try { - // 本地资源路径 String localPath = RuoYiConfig.getExcelTemplate(); // 下载名称 diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/ProjectOrderInfoController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/ProjectOrderInfoController.java index 49896873..007a5165 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/ProjectOrderInfoController.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/ProjectOrderInfoController.java @@ -1,8 +1,24 @@ package com.ruoyi.sip.controller; +import java.io.File; +import java.io.IOException; import java.util.List; + +import com.ruoyi.common.config.RuoYiConfig; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.ShiroUtils; +import com.ruoyi.common.utils.file.FileUploadUtils; +import com.ruoyi.common.utils.file.FileUtils; +import com.ruoyi.sip.domain.DeliveryList; +import com.ruoyi.sip.domain.ProjectOrderConfigInfo; +import com.ruoyi.sip.domain.ProjectOrderFileLog; +import com.ruoyi.sip.service.IProjectOrderConfigInfoService; +import com.ruoyi.sip.service.IProjectOrderFileLogService; +import lombok.extern.slf4j.Slf4j; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.GetMapping; @@ -18,6 +34,10 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; /** * 订单管理Controller @@ -27,6 +47,7 @@ import com.ruoyi.common.core.page.TableDataInfo; */ @Controller @RequestMapping("/project/order") +@Slf4j public class ProjectOrderInfoController extends BaseController { private String prefix = "project/order"; @@ -34,6 +55,10 @@ public class ProjectOrderInfoController extends BaseController @Autowired private IProjectOrderInfoService projectOrderInfoService; + @Autowired + private IProjectOrderConfigInfoService projectOrderConfigInfoService; + @Autowired + private IProjectOrderFileLogService fileLogService; @RequiresPermissions("project:order:view") @GetMapping() public String order() @@ -125,4 +150,68 @@ public class ProjectOrderInfoController extends BaseController { return toAjax(projectOrderInfoService.deleteProjectOrderInfoByIds(ids)); } + + + /** + * 导入数据 + */ + + @PostMapping("/importConfigData") + @ResponseBody + public AjaxResult importConfigData(MultipartFile file, Long orderId) { + return projectOrderConfigInfoService.importConfigData(file, orderId); + } + + /** + * 导入数据 + */ + + @PostMapping("/importContractData") + @ResponseBody + public AjaxResult importContractData(MultipartFile file, Long orderId) { + ProjectOrderFileLog projectOrderFileLog = new ProjectOrderFileLog(); + projectOrderFileLog.setFileType(ProjectOrderFileLog.FileTypeEnum.CONTRACT.getCode()); + projectOrderFileLog.setOrderId(orderId); + projectOrderFileLog.setUploadTime(DateUtils.getNowDate()); + projectOrderFileLog.setUploadUser(ShiroUtils.getUserId().toString()); + projectOrderFileLog.setFileName(file.getOriginalFilename()); + try { + String upload = FileUploadUtils.upload(file); + projectOrderFileLog.setFilePath(upload); + } catch (IOException e) { + return AjaxResult.error("上传失败"); + } + fileLogService.insertProjectOrderFileLog(projectOrderFileLog); + return AjaxResult.success("导入成功"); + } + + + @GetMapping("/contract/export") + public void contractExport(String fileName, HttpServletRequest request, HttpServletResponse response) { + try { + // 本地资源路径 + String localPath = RuoYiConfig.getExcelTemplate(); + // 下载名称 + String downloadPath = localPath + File.separator + fileName; + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); + FileUtils.setAttachmentResponseHeader(response, fileName); + FileUtils.writeBytes(downloadPath, response.getOutputStream()); + } catch (Exception e) { + log.error("下载文件失败", e); + } + } + @GetMapping("/file/download") + public void download(String filePath, HttpServletRequest request, HttpServletResponse response) { + try { + // 本地资源路径 + String localPath = RuoYiConfig.getProfile(); + // 下载名称 + String downloadPath = filePath.replace(Constants.RESOURCE_PREFIX,localPath); + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); + FileUtils.setAttachmentResponseHeader(response, filePath); + FileUtils.writeBytes(downloadPath, response.getOutputStream()); + } catch (Exception e) { + log.error("下载文件失败", e); + } + } } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderConfigInfo.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderConfigInfo.java new file mode 100644 index 00000000..b561ab86 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderConfigInfo.java @@ -0,0 +1,89 @@ +package com.ruoyi.sip.domain; + +import java.math.BigDecimal; + +import lombok.Data; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 订单配置信息对象 project_order_config_info + * + * @author ruoyi + * @date 2025-06-03 + */ +@Data +public class ProjectOrderConfigInfo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** */ + private Long id; + + /** 订单id */ +// @Excel(name = "订单id") + private Long orderId; + + /** 产品编码 */ + @Excel(name = "产品编码") + private String productBomCode; + + /** 产品型号 */ + @Excel(name = "产品型号") + private String model; + + /** 产品代码 */ + @Excel(name = "产品代码") + private String productCode; + + /** 产品描述 */ + @Excel(name = "描述") + private String productDesc; + + /** 产品数量 */ + @Excel(name = "数量") + private Long quantity; + + /** 目录单价 */ + @Excel(name = "目录单价(RMB)") + private BigDecimal cataloguePrice; + /** 指导折扣 */ + @Excel(name = "指导折扣") + private BigDecimal guidanceDiscount; + + /** 折扣 */ + @Excel(name = "折扣") + private BigDecimal discount; + + /** 单价 */ + @Excel(name = "单价(RMB)") + private BigDecimal price; + /** 总价 */ + @Excel(name = "总价(RMB)") + private BigDecimal allPrice; + /** 目录总价 */ + @Excel(name = "目录总价(RMB)") + private BigDecimal catalogueAllPrice; + + + + + + + + + /** 性能参数 */ + @Excel(name = "性能参数") + private String performanceParameters; + + /** CID信息 */ + @Excel(name = "CID信息") + private String cidInfo; + /** CID信息 */ + @Excel(name = "备注") + private String remark; + + +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderFileLog.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderFileLog.java new file mode 100644 index 00000000..f0087356 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderFileLog.java @@ -0,0 +1,65 @@ +package com.ruoyi.sip.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.Getter; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 订单文件对象 project_order_file_log + * + * @author ruoyi + * @date 2025-06-03 + */ +@Data +public class ProjectOrderFileLog extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** */ + private Long id; + + /** 订单id */ + @Excel(name = "订单id") + private Long orderId; + + /** 文件名称 */ + @Excel(name = "文件名称") + private String fileName; + + /** 上传人 */ + @Excel(name = "上传人") + private String uploadUser; + + /** 上传时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Excel(name = "上传时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date uploadTime; + + /** 文件路径 */ + @Excel(name = "文件路径") + private String filePath; + + /** 文件类型 1:配置器 2:合同 */ + @Excel(name = "文件类型 1:配置器 2:合同") + private String fileType; + + @Getter + public enum FileTypeEnum{ + CONFIG("1","配置器"), + CONTRACT("2","合同"); + + private final String code; + private final String desc; + + FileTypeEnum(String code, String desc) { + this.code = code; + this.desc = desc; + } + + } +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java index 69eeb2e0..778fc477 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java @@ -2,6 +2,7 @@ package com.ruoyi.sip.domain; import java.math.BigDecimal; import java.util.Date; +import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; @@ -166,5 +167,7 @@ public class ProjectOrderInfo extends BaseEntity { */ @Excel(name = "订单状态") private String orderStatus; + private List contractFileList; + private List configFileList; } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderConfigInfoMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderConfigInfoMapper.java new file mode 100644 index 00000000..ec745997 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderConfigInfoMapper.java @@ -0,0 +1,64 @@ +package com.ruoyi.sip.mapper; + +import java.util.List; +import com.ruoyi.sip.domain.ProjectOrderConfigInfo; + +/** + * 订单配置信息Mapper接口 + * + * @author ruoyi + * @date 2025-06-03 + */ +public interface ProjectOrderConfigInfoMapper +{ + /** + * 查询订单配置信息 + * + * @param id 订单配置信息主键 + * @return 订单配置信息 + */ + public ProjectOrderConfigInfo selectProjectOrderConfigInfoById(Long id); + + /** + * 查询订单配置信息列表 + * + * @param projectOrderConfigInfo 订单配置信息 + * @return 订单配置信息集合 + */ + public List selectProjectOrderConfigInfoList(ProjectOrderConfigInfo projectOrderConfigInfo); + + /** + * 新增订单配置信息 + * + * @param projectOrderConfigInfo 订单配置信息 + * @return 结果 + */ + public int insertProjectOrderConfigInfo(ProjectOrderConfigInfo projectOrderConfigInfo); + + /** + * 修改订单配置信息 + * + * @param projectOrderConfigInfo 订单配置信息 + * @return 结果 + */ + public int updateProjectOrderConfigInfo(ProjectOrderConfigInfo projectOrderConfigInfo); + + /** + * 删除订单配置信息 + * + * @param id 订单配置信息主键 + * @return 结果 + */ + public int deleteProjectOrderConfigInfoById(Long id); + + /** + * 批量删除订单配置信息 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteProjectOrderConfigInfoByIds(String[] ids); + + void insertBatch(List orderConfigInfoList); + +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderFileLogMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderFileLogMapper.java new file mode 100644 index 00000000..3e866b68 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderFileLogMapper.java @@ -0,0 +1,65 @@ +package com.ruoyi.sip.mapper; + +import java.util.List; +import com.ruoyi.sip.domain.ProjectOrderFileLog; + +/** + * 订单文件Mapper接口 + * + * @author ruoyi + * @date 2025-06-03 + */ +public interface ProjectOrderFileLogMapper +{ + /** + * 查询订单文件 + * + * @param id 订单文件主键 + * @return 订单文件 + */ + public ProjectOrderFileLog selectProjectOrderFileLogById(Long id); + + /** + * 查询订单文件列表 + * + * @param projectOrderFileLog 订单文件 + * @return 订单文件集合 + */ + public List selectProjectOrderFileLogList(ProjectOrderFileLog projectOrderFileLog); + + /** + * 新增订单文件 + * + * @param projectOrderFileLog 订单文件 + * @return 结果 + */ + public int insertProjectOrderFileLog(ProjectOrderFileLog projectOrderFileLog); + + /** + * 修改订单文件 + * + * @param projectOrderFileLog 订单文件 + * @return 结果 + */ + public int updateProjectOrderFileLog(ProjectOrderFileLog projectOrderFileLog); + + /** + * 删除订单文件 + * + * @param id 订单文件主键 + * @return 结果 + */ + public int deleteProjectOrderFileLogById(Long id); + + /** + * 批量删除订单文件 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteProjectOrderFileLogByIds(String[] ids); + + void deleteProjectOrderFileLogByOrderIdList(List longs); + + List listByOrderId(List orderIdList); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOrderConfigInfoService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOrderConfigInfoService.java new file mode 100644 index 00000000..15738dab --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOrderConfigInfoService.java @@ -0,0 +1,66 @@ +package com.ruoyi.sip.service; + +import java.util.List; + +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.sip.domain.ProjectOrderConfigInfo; +import org.springframework.web.multipart.MultipartFile; + +/** + * 订单配置信息Service接口 + * + * @author ruoyi + * @date 2025-06-03 + */ +public interface IProjectOrderConfigInfoService +{ + /** + * 查询订单配置信息 + * + * @param id 订单配置信息主键 + * @return 订单配置信息 + */ + public ProjectOrderConfigInfo selectProjectOrderConfigInfoById(Long id); + + /** + * 查询订单配置信息列表 + * + * @param projectOrderConfigInfo 订单配置信息 + * @return 订单配置信息集合 + */ + public List selectProjectOrderConfigInfoList(ProjectOrderConfigInfo projectOrderConfigInfo); + + /** + * 新增订单配置信息 + * + * @param projectOrderConfigInfo 订单配置信息 + * @return 结果 + */ + public int insertProjectOrderConfigInfo(ProjectOrderConfigInfo projectOrderConfigInfo); + + /** + * 修改订单配置信息 + * + * @param projectOrderConfigInfo 订单配置信息 + * @return 结果 + */ + public int updateProjectOrderConfigInfo(ProjectOrderConfigInfo projectOrderConfigInfo); + + /** + * 批量删除订单配置信息 + * + * @param ids 需要删除的订单配置信息主键集合 + * @return 结果 + */ + public int deleteProjectOrderConfigInfoByIds(String ids); + + /** + * 删除订单配置信息信息 + * + * @param id 订单配置信息主键 + * @return 结果 + */ + public int deleteProjectOrderConfigInfoById(Long id); + + AjaxResult importConfigData(MultipartFile orderConfigInfoList, Long orderId); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOrderFileLogService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOrderFileLogService.java new file mode 100644 index 00000000..c6388deb --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOrderFileLogService.java @@ -0,0 +1,65 @@ +package com.ruoyi.sip.service; + +import java.util.List; +import com.ruoyi.sip.domain.ProjectOrderFileLog; + +/** + * 订单文件Service接口 + * + * @author ruoyi + * @date 2025-06-03 + */ +public interface IProjectOrderFileLogService +{ + /** + * 查询订单文件 + * + * @param id 订单文件主键 + * @return 订单文件 + */ + public ProjectOrderFileLog selectProjectOrderFileLogById(Long id); + + /** + * 查询订单文件列表 + * + * @param projectOrderFileLog 订单文件 + * @return 订单文件集合 + */ + public List selectProjectOrderFileLogList(ProjectOrderFileLog projectOrderFileLog); + + /** + * 新增订单文件 + * + * @param projectOrderFileLog 订单文件 + * @return 结果 + */ + public int insertProjectOrderFileLog(ProjectOrderFileLog projectOrderFileLog); + + /** + * 修改订单文件 + * + * @param projectOrderFileLog 订单文件 + * @return 结果 + */ + public int updateProjectOrderFileLog(ProjectOrderFileLog projectOrderFileLog); + + /** + * 批量删除订单文件 + * + * @param ids 需要删除的订单文件主键集合 + * @return 结果 + */ + public int deleteProjectOrderFileLogByIds(String ids); + + /** + * 删除订单文件信息 + * + * @param id 订单文件主键 + * @return 结果 + */ + public int deleteProjectOrderFileLogById(Long id); + + void deleteProjectOrderFileLogByOrderIdList(List longs); + + List listByOrderId(List longs); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderConfigInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderConfigInfoServiceImpl.java new file mode 100644 index 00000000..3b8405bb --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderConfigInfoServiceImpl.java @@ -0,0 +1,163 @@ +package com.ruoyi.sip.service.impl; + +import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +import cn.hutool.core.collection.CollUtil; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.ShiroUtils; +import com.ruoyi.common.utils.file.FileUploadUtils; +import com.ruoyi.common.utils.file.FileUtils; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.sip.domain.ProjectOrderFileLog; +import com.ruoyi.sip.service.IProjectOrderFileLogService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.sip.mapper.ProjectOrderConfigInfoMapper; +import com.ruoyi.sip.domain.ProjectOrderConfigInfo; +import com.ruoyi.sip.service.IProjectOrderConfigInfoService; +import com.ruoyi.common.core.text.Convert; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +/** + * 订单配置信息Service业务层处理 + * + * @author ruoyi + * @date 2025-06-03 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class ProjectOrderConfigInfoServiceImpl implements IProjectOrderConfigInfoService { + @Autowired + private ProjectOrderConfigInfoMapper projectOrderConfigInfoMapper; + + @Autowired + private IProjectOrderFileLogService fileLogService; + + /** + * 查询订单配置信息 + * + * @param id 订单配置信息主键 + * @return 订单配置信息 + */ + @Override + public ProjectOrderConfigInfo selectProjectOrderConfigInfoById(Long id) { + return projectOrderConfigInfoMapper.selectProjectOrderConfigInfoById(id); + } + + /** + * 查询订单配置信息列表 + * + * @param projectOrderConfigInfo 订单配置信息 + * @return 订单配置信息 + */ + @Override + public List selectProjectOrderConfigInfoList(ProjectOrderConfigInfo projectOrderConfigInfo) { + return projectOrderConfigInfoMapper.selectProjectOrderConfigInfoList(projectOrderConfigInfo); + } + + /** + * 新增订单配置信息 + * + * @param projectOrderConfigInfo 订单配置信息 + * @return 结果 + */ + @Override + public int insertProjectOrderConfigInfo(ProjectOrderConfigInfo projectOrderConfigInfo) { + return projectOrderConfigInfoMapper.insertProjectOrderConfigInfo(projectOrderConfigInfo); + } + + /** + * 修改订单配置信息 + * + * @param projectOrderConfigInfo 订单配置信息 + * @return 结果 + */ + @Override + public int updateProjectOrderConfigInfo(ProjectOrderConfigInfo projectOrderConfigInfo) { + return projectOrderConfigInfoMapper.updateProjectOrderConfigInfo(projectOrderConfigInfo); + } + + /** + * 批量删除订单配置信息 + * + * @param ids 需要删除的订单配置信息主键 + * @return 结果 + */ + @Override + public int deleteProjectOrderConfigInfoByIds(String ids) { + return projectOrderConfigInfoMapper.deleteProjectOrderConfigInfoByIds(Convert.toStrArray(ids)); + } + + /** + * 删除订单配置信息信息 + * + * @param id 订单配置信息主键 + * @return 结果 + */ + @Override + public int deleteProjectOrderConfigInfoById(Long id) { + return projectOrderConfigInfoMapper.deleteProjectOrderConfigInfoById(id); + } + + @Override + public AjaxResult importConfigData(MultipartFile file, Long orderId) { + + List orderConfigInfoList = null; + try { + ExcelUtil util = new ExcelUtil(ProjectOrderConfigInfo.class); + orderConfigInfoList = util.importExcel(file.getInputStream()); + } catch (IOException e) { + throw new ServiceException("导入失败,读取文件错误"); + } + + //保存文件 + fileLogService.deleteProjectOrderFileLogByOrderIdList(Collections.singletonList( orderId)); + ProjectOrderFileLog projectOrderFileLog = new ProjectOrderFileLog(); + try { + String upload = FileUploadUtils.upload(file); + projectOrderFileLog.setFilePath(upload); + } catch (IOException e) { + throw new ServiceException("导入失败,上传文件错误"); + } + projectOrderFileLog.setFileName(file.getOriginalFilename()); + projectOrderFileLog.setFileType(ProjectOrderFileLog.FileTypeEnum.CONFIG.getCode()); + projectOrderFileLog.setOrderId(orderId); + projectOrderFileLog.setUploadTime(DateUtils.getNowDate()); + projectOrderFileLog.setUploadUser(ShiroUtils.getUserId().toString()); + fileLogService.insertProjectOrderFileLog(projectOrderFileLog); + + + + if (CollUtil.isEmpty(orderConfigInfoList)) { + return AjaxResult.error("文件为空"); + } + List productCodeList = orderConfigInfoList.stream().map(ProjectOrderConfigInfo::getProductCode).filter(Objects::nonNull).collect(Collectors.toList()); + if (productCodeList.isEmpty()) { + return AjaxResult.error("文件为空或产品编码为空"); + } +// List orderLists = infoMapper.listOrderListByDeliveryId(deliveryId); +// if (orderLists.isEmpty()) { +// return AjaxResult.error("发货单中没有产品"); +// } +// List existsProductCodeList = orderLists.stream().map(OrderList::getProductCode).collect(Collectors.toList()); +// List notExistsProductCodeList = productCodeList.stream().filter(productCode -> !existsProductCodeList.contains(productCode)).distinct().collect(Collectors.toList()); +// if (!notExistsProductCodeList.isEmpty()) { +// return AjaxResult.error(StringUtils.format("编码为[{}]的产品在合同请单中未找到,请确认后重试;", String.join(",", notExistsProductCodeList))); +// } + + for (ProjectOrderConfigInfo configInfo : orderConfigInfoList) { + configInfo.setOrderId(orderId); + } + + projectOrderConfigInfoMapper.insertBatch(orderConfigInfoList); + return AjaxResult.success("导入成功"); + + } +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderFileLogServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderFileLogServiceImpl.java new file mode 100644 index 00000000..7770d18c --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderFileLogServiceImpl.java @@ -0,0 +1,105 @@ +package com.ruoyi.sip.service.impl; + +import java.util.Collections; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.sip.mapper.ProjectOrderFileLogMapper; +import com.ruoyi.sip.domain.ProjectOrderFileLog; +import com.ruoyi.sip.service.IProjectOrderFileLogService; +import com.ruoyi.common.core.text.Convert; + +/** + * 订单文件Service业务层处理 + * + * @author ruoyi + * @date 2025-06-03 + */ +@Service +public class ProjectOrderFileLogServiceImpl implements IProjectOrderFileLogService +{ + @Autowired + private ProjectOrderFileLogMapper projectOrderFileLogMapper; + + /** + * 查询订单文件 + * + * @param id 订单文件主键 + * @return 订单文件 + */ + @Override + public ProjectOrderFileLog selectProjectOrderFileLogById(Long id) + { + return projectOrderFileLogMapper.selectProjectOrderFileLogById(id); + } + + /** + * 查询订单文件列表 + * + * @param projectOrderFileLog 订单文件 + * @return 订单文件 + */ + @Override + public List selectProjectOrderFileLogList(ProjectOrderFileLog projectOrderFileLog) + { + return projectOrderFileLogMapper.selectProjectOrderFileLogList(projectOrderFileLog); + } + + /** + * 新增订单文件 + * + * @param projectOrderFileLog 订单文件 + * @return 结果 + */ + @Override + public int insertProjectOrderFileLog(ProjectOrderFileLog projectOrderFileLog) + { + return projectOrderFileLogMapper.insertProjectOrderFileLog(projectOrderFileLog); + } + + /** + * 修改订单文件 + * + * @param projectOrderFileLog 订单文件 + * @return 结果 + */ + @Override + public int updateProjectOrderFileLog(ProjectOrderFileLog projectOrderFileLog) + { + return projectOrderFileLogMapper.updateProjectOrderFileLog(projectOrderFileLog); + } + + /** + * 批量删除订单文件 + * + * @param ids 需要删除的订单文件主键 + * @return 结果 + */ + @Override + public int deleteProjectOrderFileLogByIds(String ids) + { + return projectOrderFileLogMapper.deleteProjectOrderFileLogByIds(Convert.toStrArray(ids)); + } + + /** + * 删除订单文件信息 + * + * @param id 订单文件主键 + * @return 结果 + */ + @Override + public int deleteProjectOrderFileLogById(Long id) + { + return projectOrderFileLogMapper.deleteProjectOrderFileLogById(id); + } + + @Override + public void deleteProjectOrderFileLogByOrderIdList(List longs) { + projectOrderFileLogMapper.deleteProjectOrderFileLogByOrderIdList(longs); + } + + @Override + public List listByOrderId(List orderIdList) { + return projectOrderFileLogMapper.listByOrderId(orderIdList); + } +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java index 1e7afe82..3ba8fb84 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java @@ -2,9 +2,13 @@ package com.ruoyi.sip.service.impl; import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import cn.hutool.core.collection.CollUtil; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.sip.domain.ProjectOrderFileLog; +import com.ruoyi.sip.service.IProjectOrderFileLogService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.sip.mapper.ProjectOrderInfoMapper; @@ -23,6 +27,8 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService { @Autowired private ProjectOrderInfoMapper projectOrderInfoMapper; + @Autowired + private IProjectOrderFileLogService fileLogService; /** * 查询订单管理 * @@ -31,7 +37,13 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService { */ @Override public ProjectOrderInfo selectProjectOrderInfoById(Long id) { - return projectOrderInfoMapper.selectProjectOrderInfoById(id); + ProjectOrderInfo projectOrderInfo = projectOrderInfoMapper.selectProjectOrderInfoById(id); + List projectOrderFileLogs = fileLogService.listByOrderId(Collections.singletonList(id)); + Map> fileLogMap = + projectOrderFileLogs.stream().collect(Collectors.groupingBy(ProjectOrderFileLog::getFileType)); + projectOrderInfo.setContractFileList(fileLogMap.get(ProjectOrderFileLog.FileTypeEnum.CONTRACT.getCode())); + projectOrderInfo.setConfigFileList(fileLogMap.get(ProjectOrderFileLog.FileTypeEnum.CONFIG.getCode())); + return projectOrderInfo; } /** diff --git a/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderConfigInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderConfigInfoMapper.xml new file mode 100644 index 00000000..4b28f894 --- /dev/null +++ b/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderConfigInfoMapper.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select id, order_id, product_bom_code, model, product_code, product_desc, quantity, + catalogue_price, catalogue_all_price, price, all_price, guidance_discount, discount, remark, + performance_parameters, cid_info from project_order_config_info + + + + + + + + insert into project_order_config_info + + order_id, + product_bom_code, + model, + product_code, + product_desc, + quantity, + catalogue_price, + catalogue_all_price, + price, + all_price, + guidance_discount, + discount, + remark, + performance_parameters, + cid_info, + + + #{orderId}, + #{productBomCode}, + #{model}, + #{productCode}, + #{productDesc}, + #{quantity}, + #{cataloguePrice}, + #{catalogueAllPrice}, + #{price}, + #{allPrice}, + #{guidanceDiscount}, + #{discount}, + #{remark}, + #{performanceParameters}, + #{cidInfo}, + + + + insert into project_order_config_info (order_id, product_bom_code, model, product_code, product_desc, + quantity, catalogue_price, catalogue_all_price, price, all_price, + guidance_discount, discount, remark, performance_parameters, cid_info) values + + (#{item.orderId}, #{item.productBomCode}, #{item.model}, #{item.productCode}, #{item.productDesc}, #{item.quantity}, + #{item.cataloguePrice}, #{item.catalogueAllPrice}, #{item.price}, #{item.allPrice}, #{item.guidanceDiscount}, + #{item.discount}, #{item.remark}, #{item.performanceParameters}, #{item.cidInfo}) + + + + + update project_order_config_info + + order_id = #{orderId}, + product_bom_code = #{productBomCode}, + model = #{model}, + product_code = #{productCode}, + product_desc = #{productDesc}, + quantity = #{quantity}, + catalogue_price = #{cataloguePrice}, + catalogue_all_price = #{catalogueAllPrice}, + price = #{price}, + all_price = #{allPrice}, + guidance_discount = #{guidanceDiscount}, + discount = #{discount}, + remark = #{remark}, + performance_parameters = #{performanceParameters}, + cid_info = #{cidInfo}, + + where id = #{id} + + + + delete from project_order_config_info where id = #{id} + + + + delete from project_order_config_info where id in + + #{id} + + + + \ No newline at end of file diff --git a/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderFileLogMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderFileLogMapper.xml new file mode 100644 index 00000000..50d6ad2c --- /dev/null +++ b/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderFileLogMapper.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + select id, order_id, file_name, upload_user, upload_time, file_path, file_type from project_order_file_log + + + + + + + + + insert into project_order_file_log + + order_id, + file_name, + upload_user, + upload_time, + file_path, + file_type, + + + #{orderId}, + #{fileName}, + #{uploadUser}, + #{uploadTime}, + #{filePath}, + #{fileType}, + + + + + update project_order_file_log + + order_id = #{orderId}, + file_name = #{fileName}, + upload_user = #{uploadUser}, + upload_time = #{uploadTime}, + file_path = #{filePath}, + file_type = #{fileType}, + + where id = #{id} + + + + delete from project_order_file_log where id = #{id} + + + + delete from project_order_file_log where id in + + #{id} + + + + delete from project_order_file_log where order_id in + + #{id} + + + + \ No newline at end of file