From 3ef4149d834fcf5becae3d40900e0a97e207aff1 Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Fri, 30 May 2025 10:10:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(sip):=20=E6=B7=BB=E5=8A=A0=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增项目管理相关的 HTML 模板文件 - 实现项目管理的前端页面逻辑 - 添加项目管理的后端接口和服务 - 集成项目管理到现有的系统中 --- .../templates/manage/delivery/delivery.html | 4 + .../resources/templates/project/info/add.html | 197 +++++++++++++++ .../templates/project/info/edit.html | 198 +++++++++++++++ .../templates/project/info/project.html | 238 ++++++++++++++++++ .../sip/controller/ProjectInfoController.java | 128 ++++++++++ .../com/ruoyi/sip/domain/ProjectInfo.java | 122 +++++++++ .../ruoyi/sip/domain/ProjectOperateLog.java | 100 ++++++++ .../ruoyi/sip/domain/ProjectProductInfo.java | 41 +++ .../ruoyi/sip/domain/ProjectWorkProgress.java | 43 ++++ .../ruoyi/sip/mapper/ProjectInfoMapper.java | 63 +++++ .../sip/mapper/ProjectOperateLogMapper.java | 63 +++++ .../sip/mapper/ProjectProductInfoMapper.java | 65 +++++ .../sip/mapper/ProjectWorkProgressMapper.java | 66 +++++ .../sip/service/IProjectInfoService.java | 61 +++++ .../service/IProjectOperateLogService.java | 63 +++++ .../service/IProjectProductInfoService.java | 65 +++++ .../service/IProjectWorkProgressService.java | 65 +++++ .../service/impl/OrderInfoServiceImpl.java | 4 +- .../service/impl/ProjectInfoServiceImpl.java | 212 ++++++++++++++++ .../impl/ProjectOperateLogServiceImpl.java | 100 ++++++++ .../impl/ProjectProductInfoServiceImpl.java | 113 +++++++++ .../impl/ProjectWorkProgressServiceImpl.java | 105 ++++++++ .../mapper/manage/OrderDeliveryMapper.xml | 1 + .../mapper/sip/ProjectInfoMapper.xml | 178 +++++++++++++ .../mapper/sip/ProjectOperateLogMapper.xml | 85 +++++++ .../mapper/sip/ProjectProductInfoMapper.xml | 86 +++++++ .../mapper/sip/ProjectWorkProgressMapper.xml | 87 +++++++ 27 files changed, 2550 insertions(+), 3 deletions(-) create mode 100644 ruoyi-admin/src/main/resources/templates/project/info/add.html create mode 100644 ruoyi-admin/src/main/resources/templates/project/info/edit.html create mode 100644 ruoyi-admin/src/main/resources/templates/project/info/project.html create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/controller/ProjectInfoController.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectInfo.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOperateLog.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectProductInfo.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectWorkProgress.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectInfoMapper.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOperateLogMapper.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectProductInfoMapper.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectWorkProgressMapper.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectInfoService.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOperateLogService.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectProductInfoService.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectWorkProgressService.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOperateLogServiceImpl.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectProductInfoServiceImpl.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectWorkProgressServiceImpl.java create mode 100644 ruoyi-sip/src/main/resources/mapper/sip/ProjectInfoMapper.xml create mode 100644 ruoyi-sip/src/main/resources/mapper/sip/ProjectOperateLogMapper.xml create mode 100644 ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml create mode 100644 ruoyi-sip/src/main/resources/mapper/sip/ProjectWorkProgressMapper.xml diff --git a/ruoyi-admin/src/main/resources/templates/manage/delivery/delivery.html b/ruoyi-admin/src/main/resources/templates/manage/delivery/delivery.html index d9bec81c..32368fe2 100644 --- a/ruoyi-admin/src/main/resources/templates/manage/delivery/delivery.html +++ b/ruoyi-admin/src/main/resources/templates/manage/delivery/delivery.html @@ -36,6 +36,10 @@ +
  • + + +
  •  搜索  重置 diff --git a/ruoyi-admin/src/main/resources/templates/project/info/add.html b/ruoyi-admin/src/main/resources/templates/project/info/add.html new file mode 100644 index 00000000..3ccb4a91 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/project/info/add.html @@ -0,0 +1,197 @@ + + + + + + + +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/project/info/edit.html b/ruoyi-admin/src/main/resources/templates/project/info/edit.html new file mode 100644 index 00000000..09bdba61 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/project/info/edit.html @@ -0,0 +1,198 @@ + + + + + + + +
    +
    + +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/project/info/project.html b/ruoyi-admin/src/main/resources/templates/project/info/project.html new file mode 100644 index 00000000..30acee3c --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/project/info/project.html @@ -0,0 +1,238 @@ + + + + + + +
    +
    +
    +
    +
    +
      +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • +  搜索 +  重置 +
    • +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/ProjectInfoController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/ProjectInfoController.java new file mode 100644 index 00000000..f6ac5961 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/ProjectInfoController.java @@ -0,0 +1,128 @@ +package com.ruoyi.sip.controller; + +import java.util.List; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.sip.domain.ProjectInfo; +import com.ruoyi.sip.service.IProjectInfoService; +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; + +/** + * 项目管理Controller + * + * @author ruoyi + * @date 2025-05-29 + */ +@Controller +@RequestMapping("/sip/project") +public class ProjectInfoController extends BaseController +{ + private String prefix = "/project/info"; + + @Autowired + private IProjectInfoService projectInfoService; + + @RequiresPermissions("sip:project:view") + @GetMapping() + public String product() + { + return prefix + "/project"; + } + + /** + * 查询项目管理列表 + */ + @RequiresPermissions("sip:project:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(ProjectInfo projectInfo) + { + startPage(); + List list = projectInfoService.selectProjectInfoList(projectInfo); + return getDataTable(list); + } + + /** + * 导出项目管理列表 + */ + @RequiresPermissions("sip:project:export") + @Log(title = "项目管理", businessType = BusinessType.EXPORT) + @PostMapping("/export") + @ResponseBody + public AjaxResult export(ProjectInfo projectInfo) + { + List list = projectInfoService.selectProjectInfoList(projectInfo); + ExcelUtil util = new ExcelUtil(ProjectInfo.class); + return util.exportExcel(list, "项目管理数据"); + } + + /** + * 新增项目管理 + */ + @RequiresPermissions("sip:project:add") + @GetMapping("/add") + public String add() + { + return prefix + "/add"; + } + + /** + * 新增保存项目管理 + */ + @RequiresPermissions("sip:project:add") + @Log(title = "项目管理", businessType = BusinessType.INSERT) + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(ProjectInfo projectInfo) + { + return toAjax(projectInfoService.insertProjectInfo(projectInfo)); + } + + /** + * 修改项目管理 + */ + @RequiresPermissions("sip:project:edit") + @GetMapping("/edit/{id}") + public String edit(@PathVariable("id") Long id, ModelMap mmap) + { + ProjectInfo projectInfo = projectInfoService.selectProjectInfoById(id); + mmap.put("projectInfo", projectInfo); + return prefix + "/edit"; + } + + /** + * 修改保存项目管理 + */ + @RequiresPermissions("sip:project:edit") + @Log(title = "项目管理", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(ProjectInfo projectInfo) + { + return toAjax(projectInfoService.updateProjectInfo(projectInfo)); + } + + /** + * 删除项目管理 + */ + @RequiresPermissions("sip:project:remove") + @Log(title = "项目管理", businessType = BusinessType.DELETE) + @PostMapping( "/remove") + @ResponseBody + public AjaxResult remove(String ids) + { + return toAjax(projectInfoService.deleteProjectInfoByIds(ids)); + } +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectInfo.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectInfo.java new file mode 100644 index 00000000..51490739 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectInfo.java @@ -0,0 +1,122 @@ +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; +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_info + * + * @author ruoyi + * @date 2025-05-29 + */ +@Data +public class ProjectInfo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** */ + private Long id; + + /** 项目编码 */ + @Excel(name = "项目编码") + private String projectCode; + + /** 项目名称 */ + @Excel(name = "项目名称") + private String projectName; + + /** 客户code */ + @Excel(name = "客户code") + private String customerCode; + + /** 客户名称 */ + @Excel(name = "客户名称") + private String customerName; + + /** 行业 */ + @Excel(name = "行业") + private String industryType; + + /** 属地 */ + @Excel(name = "属地") + private String province; + + /** 项目阶段 */ + @Excel(name = "项目阶段") + private String projectStage; + + /** 项目把握度 */ + @Excel(name = "项目把握度") + private String projectGraspDegree; + + /** 汇智支撑人员id */ + @Excel(name = "汇智支撑人员id") + private String hzSupportUser; + + /** 运作机构 */ + @Excel(name = "运作机构") + private String operateInstitution; + + /** 代理商code */ + @Excel(name = "代理商code") + private String partnerCode; + + /** 联系方式 */ + @Excel(name = "联系方式") + private String contactWay; + + /** 预计金额 */ + @Excel(name = "预计金额") + private BigDecimal estimatedAmount; + + /** 币种 */ + @Excel(name = "币种") + private String currencyType; + + /** 预计下单时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Excel(name = "预计下单时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date estimatedOrderTime; + + /** 预计发货时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Excel(name = "预计发货时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date estimatedDeliverTime; + + /** 竞争对手 */ + @Excel(name = "竞争对手") + private String competitor; + + /** 是否国产 */ + @Excel(name = "是否国产") + private String countryProduct; + + /** 服务器配置 */ + @Excel(name = "服务器配置") + private String serverConfiguration; + + /** 关键技术问题 */ + @Excel(name = "关键技术问题") + private String keyProblem; + + /** 项目描述 */ + @Excel(name = "项目描述") + private String projectDesc; + /** 软件项目产品信息 */ + private List softwareProjectProductInfoList; + /** 硬件项目产品信息 */ + private List hardwareProjectProductInfoList; + /** 项目操作日志信息 */ + private List projectOperateLogList; + /** 项目工作进度信息 */ + private List projectWorkProgressList; + +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOperateLog.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOperateLog.java new file mode 100644 index 00000000..27ae65eb --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOperateLog.java @@ -0,0 +1,100 @@ +package com.ruoyi.sip.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +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_operate_log + * + * @author ruoyi + * @date 2025-05-29 + */ +public class ProjectOperateLog extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** */ + private Long id; + + /** 操作内容 */ + @Excel(name = "操作内容") + private String operateLog; + + /** 操作人员 */ + @Excel(name = "操作人员") + private String operateUser; + + /** 操作时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date operateTime; + + /** 项目id */ + @Excel(name = "项目id") + private Long projectId; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setOperateLog(String operateLog) + { + this.operateLog = operateLog; + } + + public String getOperateLog() + { + return operateLog; + } + + public void setOperateUser(String operateUser) + { + this.operateUser = operateUser; + } + + public String getOperateUser() + { + return operateUser; + } + + public void setOperateTime(Date operateTime) + { + this.operateTime = operateTime; + } + + public Date getOperateTime() + { + return operateTime; + } + + public void setProjectId(Long projectId) + { + this.projectId = projectId; + } + + public Long getProjectId() + { + return projectId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("operateLog", getOperateLog()) + .append("operateUser", getOperateUser()) + .append("operateTime", getOperateTime()) + .append("projectId", getProjectId()) + .toString(); + } +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectProductInfo.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectProductInfo.java new file mode 100644 index 00000000..08e6c9a8 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectProductInfo.java @@ -0,0 +1,41 @@ +package com.ruoyi.sip.domain; + +import java.util.List; + +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_product_info + * + * @author ruoyi + * @date 2025-05-29 + */ +@Data +public class ProjectProductInfo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** */ + private Long id; + + /** 项目id */ + @Excel(name = "项目id") + private Long projectId; + + /** 产品编码 */ + @Excel(name = "产品编码") + private String productCode; + + /** 数量 */ + @Excel(name = "数量") + private Long quantity; + + private String type; + + private String model; + +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectWorkProgress.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectWorkProgress.java new file mode 100644 index 00000000..b62a238f --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectWorkProgress.java @@ -0,0 +1,43 @@ +package com.ruoyi.sip.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +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_work_progress + * + * @author ruoyi + * @date 2025-05-29 + */ +@Data +public class ProjectWorkProgress extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** */ + private Long id; + + /** 变更内容 */ + @Excel(name = "变更内容") + private String workContent; + + /** 更新人 */ + @Excel(name = "更新人") + private String workUser; + + /** 更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date workTime; + + /** 项目id */ + @Excel(name = "项目id") + private Long projectId; + + private String userName; +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectInfoMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectInfoMapper.java new file mode 100644 index 00000000..2acc4f24 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectInfoMapper.java @@ -0,0 +1,63 @@ +package com.ruoyi.sip.mapper; + +import java.util.List; +import com.ruoyi.sip.domain.ProjectInfo; + +/** + * 项目管理Mapper接口 + * + * @author ruoyi + * @date 2025-05-29 + */ +public interface ProjectInfoMapper +{ + /** + * 查询项目管理 + * + * @param id 项目管理主键 + * @return 项目管理 + */ + public ProjectInfo selectProjectInfoById(Long id); + + /** + * 查询项目管理列表 + * + * @param projectInfo 项目管理 + * @return 项目管理集合 + */ + public List selectProjectInfoList(ProjectInfo projectInfo); + + /** + * 新增项目管理 + * + * @param projectInfo 项目管理 + * @return 结果 + */ + public int insertProjectInfo(ProjectInfo projectInfo); + + /** + * 修改项目管理 + * + * @param projectInfo 项目管理 + * @return 结果 + */ + public int updateProjectInfo(ProjectInfo projectInfo); + + /** + * 删除项目管理 + * + * @param id 项目管理主键 + * @return 结果 + */ + public int deleteProjectInfoById(Long id); + + /** + * 批量删除项目管理 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteProjectInfoByIds(String[] ids); + + String selectMaxProjectCode(ProjectInfo projectInfo); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOperateLogMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOperateLogMapper.java new file mode 100644 index 00000000..68df0015 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOperateLogMapper.java @@ -0,0 +1,63 @@ +package com.ruoyi.sip.mapper; + +import java.util.List; +import com.ruoyi.sip.domain.ProjectOperateLog; + +/** + * 项目操作日志Mapper接口 + * + * @author ruoyi + * @date 2025-05-29 + */ +public interface ProjectOperateLogMapper +{ + /** + * 查询项目操作日志 + * + * @param id 项目操作日志主键 + * @return 项目操作日志 + */ + public ProjectOperateLog selectProjectOperateLogById(Long id); + + /** + * 查询项目操作日志列表 + * + * @param projectOperateLog 项目操作日志 + * @return 项目操作日志集合 + */ + public List selectProjectOperateLogList(ProjectOperateLog projectOperateLog); + + /** + * 新增项目操作日志 + * + * @param projectOperateLog 项目操作日志 + * @return 结果 + */ + public int insertProjectOperateLog(ProjectOperateLog projectOperateLog); + + /** + * 修改项目操作日志 + * + * @param projectOperateLog 项目操作日志 + * @return 结果 + */ + public int updateProjectOperateLog(ProjectOperateLog projectOperateLog); + + /** + * 删除项目操作日志 + * + * @param id 项目操作日志主键 + * @return 结果 + */ + public int deleteProjectOperateLogById(Long id); + + /** + * 批量删除项目操作日志 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteProjectOperateLogByIds(String[] ids); + + List selectProjectOperateLogListByProjectId(Long id); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectProductInfoMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectProductInfoMapper.java new file mode 100644 index 00000000..58d95b76 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectProductInfoMapper.java @@ -0,0 +1,65 @@ +package com.ruoyi.sip.mapper; + +import java.util.List; +import com.ruoyi.sip.domain.ProjectProductInfo; + +/** + * 项目产品信息Mapper接口 + * + * @author ruoyi + * @date 2025-05-29 + */ +public interface ProjectProductInfoMapper +{ + /** + * 查询项目产品信息 + * + * @param id 项目产品信息主键 + * @return 项目产品信息 + */ + public ProjectProductInfo selectProjectProductInfoById(Long id); + + /** + * 查询项目产品信息列表 + * + * @param projectProductInfo 项目产品信息 + * @return 项目产品信息集合 + */ + public List selectProjectProductInfoList(ProjectProductInfo projectProductInfo); + + /** + * 新增项目产品信息 + * + * @param projectProductInfo 项目产品信息 + * @return 结果 + */ + public int insertProjectProductInfo(ProjectProductInfo projectProductInfo); + + /** + * 修改项目产品信息 + * + * @param projectProductInfo 项目产品信息 + * @return 结果 + */ + public int updateProjectProductInfo(ProjectProductInfo projectProductInfo); + + /** + * 删除项目产品信息 + * + * @param id 项目产品信息主键 + * @return 结果 + */ + public int deleteProjectProductInfoById(Long id); + + /** + * 批量删除项目产品信息 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteProjectProductInfoByIds(String[] ids); + + List selectProjectProductInfoListByProjectId(Long projectId); + + void saveBatch(List addList); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectWorkProgressMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectWorkProgressMapper.java new file mode 100644 index 00000000..71de2d18 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectWorkProgressMapper.java @@ -0,0 +1,66 @@ +package com.ruoyi.sip.mapper; + +import java.util.List; +import com.ruoyi.sip.domain.ProjectWorkProgress; + +/** + * 项目工作进度Mapper接口 + * + * @author ruoyi + * @date 2025-05-29 + */ +public interface ProjectWorkProgressMapper +{ + /** + * 查询项目工作进度 + * + * @param id 项目工作进度主键 + * @return 项目工作进度 + */ + public ProjectWorkProgress selectProjectWorkProgressById(Long id); + + /** + * 查询项目工作进度列表 + * + * @param projectWorkProgress 项目工作进度 + * @return 项目工作进度集合 + */ + public List selectProjectWorkProgressList(ProjectWorkProgress projectWorkProgress); + + /** + * 新增项目工作进度 + * + * @param projectWorkProgress 项目工作进度 + * @return 结果 + */ + public int insertProjectWorkProgress(ProjectWorkProgress projectWorkProgress); + + /** + * 修改项目工作进度 + * + * @param projectWorkProgress 项目工作进度 + * @return 结果 + */ + public int updateProjectWorkProgress(ProjectWorkProgress projectWorkProgress); + + /** + * 删除项目工作进度 + * + * @param id 项目工作进度主键 + * @return 结果 + */ + public int deleteProjectWorkProgressById(Long id); + + /** + * 批量删除项目工作进度 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteProjectWorkProgressByIds(String[] ids); + + List selectProjectWorkProgressListByProjectId(Long projectId); + + void insertIgnoreBatch(List projectWorkProgressList); + +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectInfoService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectInfoService.java new file mode 100644 index 00000000..dd477015 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectInfoService.java @@ -0,0 +1,61 @@ +package com.ruoyi.sip.service; + +import java.util.List; +import com.ruoyi.sip.domain.ProjectInfo; + +/** + * 项目管理Service接口 + * + * @author ruoyi + * @date 2025-05-29 + */ +public interface IProjectInfoService +{ + /** + * 查询项目管理 + * + * @param id 项目管理主键 + * @return 项目管理 + */ + public ProjectInfo selectProjectInfoById(Long id); + + /** + * 查询项目管理列表 + * + * @param projectInfo 项目管理 + * @return 项目管理集合 + */ + public List selectProjectInfoList(ProjectInfo projectInfo); + + /** + * 新增项目管理 + * + * @param projectInfo 项目管理 + * @return 结果 + */ + public int insertProjectInfo(ProjectInfo projectInfo); + + /** + * 修改项目管理 + * + * @param projectInfo 项目管理 + * @return 结果 + */ + public int updateProjectInfo(ProjectInfo projectInfo); + + /** + * 批量删除项目管理 + * + * @param ids 需要删除的项目管理主键集合 + * @return 结果 + */ + public int deleteProjectInfoByIds(String ids); + + /** + * 删除项目管理信息 + * + * @param id 项目管理主键 + * @return 结果 + */ + public int deleteProjectInfoById(Long id); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOperateLogService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOperateLogService.java new file mode 100644 index 00000000..1878e076 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOperateLogService.java @@ -0,0 +1,63 @@ +package com.ruoyi.sip.service; + +import java.util.List; +import com.ruoyi.sip.domain.ProjectOperateLog; + +/** + * 项目操作日志Service接口 + * + * @author ruoyi + * @date 2025-05-29 + */ +public interface IProjectOperateLogService +{ + /** + * 查询项目操作日志 + * + * @param id 项目操作日志主键 + * @return 项目操作日志 + */ + public ProjectOperateLog selectProjectOperateLogById(Long id); + + /** + * 查询项目操作日志列表 + * + * @param projectOperateLog 项目操作日志 + * @return 项目操作日志集合 + */ + public List selectProjectOperateLogList(ProjectOperateLog projectOperateLog); + + /** + * 新增项目操作日志 + * + * @param projectOperateLog 项目操作日志 + * @return 结果 + */ + public int insertProjectOperateLog(ProjectOperateLog projectOperateLog); + + /** + * 修改项目操作日志 + * + * @param projectOperateLog 项目操作日志 + * @return 结果 + */ + public int updateProjectOperateLog(ProjectOperateLog projectOperateLog); + + /** + * 批量删除项目操作日志 + * + * @param ids 需要删除的项目操作日志主键集合 + * @return 结果 + */ + public int deleteProjectOperateLogByIds(String ids); + + /** + * 删除项目操作日志信息 + * + * @param id 项目操作日志主键 + * @return 结果 + */ + public int deleteProjectOperateLogById(Long id); + + List selectProjectOperateLogListByProjectId(Long id); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectProductInfoService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectProductInfoService.java new file mode 100644 index 00000000..971ecaee --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectProductInfoService.java @@ -0,0 +1,65 @@ +package com.ruoyi.sip.service; + +import java.util.List; +import com.ruoyi.sip.domain.ProjectProductInfo; + +/** + * 项目产品信息Service接口 + * + * @author ruoyi + * @date 2025-05-29 + */ +public interface IProjectProductInfoService +{ + /** + * 查询项目产品信息 + * + * @param id 项目产品信息主键 + * @return 项目产品信息 + */ + public ProjectProductInfo selectProjectProductInfoById(Long id); + + /** + * 查询项目产品信息列表 + * + * @param projectProductInfo 项目产品信息 + * @return 项目产品信息集合 + */ + public List selectProjectProductInfoList(ProjectProductInfo projectProductInfo); + + /** + * 新增项目产品信息 + * + * @param projectProductInfo 项目产品信息 + * @return 结果 + */ + public int insertProjectProductInfo(ProjectProductInfo projectProductInfo); + + /** + * 修改项目产品信息 + * + * @param projectProductInfo 项目产品信息 + * @return 结果 + */ + public int updateProjectProductInfo(ProjectProductInfo projectProductInfo); + + /** + * 批量删除项目产品信息 + * + * @param ids 需要删除的项目产品信息主键集合 + * @return 结果 + */ + public int deleteProjectProductInfoByIds(String ids); + + /** + * 删除项目产品信息信息 + * + * @param id 项目产品信息主键 + * @return 结果 + */ + public int deleteProjectProductInfoById(Long id); + + List selectProjectProductInfoListByProjectId(Long projectId); + + void saveBatch(List addList); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectWorkProgressService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectWorkProgressService.java new file mode 100644 index 00000000..2c84bd61 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectWorkProgressService.java @@ -0,0 +1,65 @@ +package com.ruoyi.sip.service; + +import java.util.List; +import com.ruoyi.sip.domain.ProjectWorkProgress; + +/** + * 项目工作进度Service接口 + * + * @author ruoyi + * @date 2025-05-29 + */ +public interface IProjectWorkProgressService +{ + /** + * 查询项目工作进度 + * + * @param id 项目工作进度主键 + * @return 项目工作进度 + */ + public ProjectWorkProgress selectProjectWorkProgressById(Long id); + + /** + * 查询项目工作进度列表 + * + * @param projectWorkProgress 项目工作进度 + * @return 项目工作进度集合 + */ + public List selectProjectWorkProgressList(ProjectWorkProgress projectWorkProgress); + + /** + * 新增项目工作进度 + * + * @param projectWorkProgress 项目工作进度 + * @return 结果 + */ + public int insertProjectWorkProgress(ProjectWorkProgress projectWorkProgress); + + /** + * 修改项目工作进度 + * + * @param projectWorkProgress 项目工作进度 + * @return 结果 + */ + public int updateProjectWorkProgress(ProjectWorkProgress projectWorkProgress); + + /** + * 批量删除项目工作进度 + * + * @param ids 需要删除的项目工作进度主键集合 + * @return 结果 + */ + public int deleteProjectWorkProgressByIds(String ids); + + /** + * 删除项目工作进度信息 + * + * @param id 项目工作进度主键 + * @return 结果 + */ + public int deleteProjectWorkProgressById(Long id); + + List selectProjectWorkProgressListByProjectId(Long projectId); + + void insertIgnoreBatch(List projectWorkProgressList); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OrderInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OrderInfoServiceImpl.java index 36cd0862..9426fef3 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OrderInfoServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OrderInfoServiceImpl.java @@ -279,9 +279,7 @@ public class OrderInfoServiceImpl implements IOrderInfoService } BigDecimal amount = orderList.getPrice().multiply(new BigDecimal(orderList.getQuantity())); - if (orderList.getDiscount()!=null){ - amount = amount.multiply(orderList.getDiscount()).setScale(2, RoundingMode.HALF_UP); - } + amount = amount.multiply(orderList.getDiscount()).setScale(2, RoundingMode.HALF_UP); orderList.setAmount(amount); } orderInfoMapper.deleteOrderListByOrderId(orderId); diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java new file mode 100644 index 00000000..2f493b84 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java @@ -0,0 +1,212 @@ +package com.ruoyi.sip.service.impl; + +import java.util.ArrayList; +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.common.utils.ShiroUtils; +import com.ruoyi.sip.domain.*; +import com.ruoyi.sip.service.IProjectOperateLogService; +import com.ruoyi.sip.service.IProjectProductInfoService; +import com.ruoyi.sip.service.IProjectWorkProgressService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.sip.mapper.ProjectInfoMapper; +import com.ruoyi.sip.service.IProjectInfoService; +import com.ruoyi.common.core.text.Convert; + +/** + * 项目管理Service业务层处理 + * + * @author ruoyi + * @date 2025-05-29 + */ +@Service +public class ProjectInfoServiceImpl implements IProjectInfoService { + @Autowired + private ProjectInfoMapper projectInfoMapper; + + @Autowired + private IProjectProductInfoService productInfoService; + @Autowired + private IProjectWorkProgressService workProgressService; + @Autowired + private IProjectOperateLogService operateLogService; + private static final String PROJECT_CODE_PREFIX = "V"; + private static final Integer PROJECT_CODE_LENGTH = 5; + + /** + * 查询项目管理 + * + * @param id 项目管理主键 + * @return 项目管理 + */ + @Override + public ProjectInfo selectProjectInfoById(Long id) { + ProjectInfo projectInfo = projectInfoMapper.selectProjectInfoById(id); + //查询产品信息 + List projectProductInfos = productInfoService.selectProjectProductInfoListByProjectId(projectInfo.getId()); + Map> productListMap = projectProductInfos.stream().collect(Collectors.groupingBy(ProjectProductInfo::getType, Collectors.toList())); + projectInfo.setHardwareProjectProductInfoList(productListMap.get(ProductInfo.ProductTypeEnum.HARDWARE.getType())); + projectInfo.setSoftwareProjectProductInfoList(productListMap.get(ProductInfo.ProductTypeEnum.SOFTWARE.getType())); + //查询变更记录信息 + List projectWorkProgresses = workProgressService.selectProjectWorkProgressListByProjectId((projectInfo.getId())); + projectInfo.setProjectWorkProgressList(projectWorkProgresses); + //查询操作日志信息 + List projectOperateLogs = operateLogService.selectProjectOperateLogListByProjectId(projectInfo.getId()); + projectInfo.setProjectOperateLogList(projectOperateLogs); + return projectInfo; + } + + /** + * 查询项目管理列表 + * + * @param projectInfo 项目管理 + * @return 项目管理 + */ + @Override + public List selectProjectInfoList(ProjectInfo projectInfo) { + return projectInfoMapper.selectProjectInfoList(projectInfo); + } + + /** + * 新增项目管理 + * + * @param projectInfo 项目管理 + * @return 结果 + */ + @Override + public int insertProjectInfo(ProjectInfo projectInfo) { + //生成项目编码 + String s = projectInfoMapper.selectMaxProjectCode(projectInfo); + if (s == null) { + projectInfo.setProjectCode(PROJECT_CODE_PREFIX + "00001"); + }else{ + projectInfo.setProjectCode(PROJECT_CODE_PREFIX + String.format("%0" + PROJECT_CODE_LENGTH + "d", + Integer.parseInt(s.substring(PROJECT_CODE_PREFIX.length())) + 1)); + } + projectInfo.setCreateTime(DateUtils.getNowDate()); + projectInfo.setCreateBy(ShiroUtils.getUserId().toString()); + int i = projectInfoMapper.insertProjectInfo(projectInfo); + //插入产品信息 + List hardwareProjectProductInfoList = projectInfo.getHardwareProjectProductInfoList(); + List softwareProjectProductInfoList = projectInfo.getSoftwareProjectProductInfoList(); + List addList=new ArrayList<>(); + addList.addAll(hardwareProjectProductInfoList); + addList.addAll(softwareProjectProductInfoList); + if (CollUtil.isNotEmpty(addList)){ + for (ProjectProductInfo projectProductInfo : addList) { + projectProductInfo.setProjectId(projectInfo.getId()); + } + productInfoService.saveBatch(addList); + } + //插入变更记录信息 + List projectWorkProgressList = projectInfo.getProjectWorkProgressList(); + if (CollUtil.isNotEmpty(projectWorkProgressList)) { + for (ProjectWorkProgress workProgress : projectWorkProgressList) { + workProgress.setProjectId(projectInfo.getId()); + } + workProgressService.insertIgnoreBatch(projectWorkProgressList); + } + return i; + } + + /** + * 修改项目管理 + * + * @param projectInfo 项目管理 + * @return 结果 + */ + @Override + public int updateProjectInfo(ProjectInfo projectInfo) { + // 获取更新前的项目信息 + ProjectInfo oldProjectInfo = projectInfoMapper.selectProjectInfoById(projectInfo.getId()); + + // 更新项目信息 + projectInfo.setUpdateTime(DateUtils.getNowDate()); + int result = projectInfoMapper.updateProjectInfo(projectInfo); + + // 记录操作日志 + StringBuilder logContent = new StringBuilder(); + int logIndex = 1; + + // 比较字段差异 + compareField(logContent, logIndex++, "项目名称", oldProjectInfo.getProjectName(), projectInfo.getProjectName()); + compareField(logContent, logIndex++, "客户名称", oldProjectInfo.getCustomerName(), projectInfo.getCustomerName()); + compareField(logContent, logIndex++, "行业", oldProjectInfo.getIndustryType(), projectInfo.getIndustryType()); + compareField(logContent, logIndex++, "属地", oldProjectInfo.getProvince(), projectInfo.getProvince()); + compareField(logContent, logIndex++, "项目阶段", oldProjectInfo.getProjectStage(), projectInfo.getProjectStage()); + compareField(logContent, logIndex++, "项目把握度", oldProjectInfo.getProjectGraspDegree(), projectInfo.getProjectGraspDegree()); + compareField(logContent, logIndex++, "汇智支撑人员", oldProjectInfo.getHzSupportUser(), projectInfo.getHzSupportUser()); + compareField(logContent, logIndex++, "运作机构", oldProjectInfo.getOperateInstitution(), projectInfo.getOperateInstitution()); + compareField(logContent, logIndex++, "代理商", oldProjectInfo.getOperateInstitution(), projectInfo.getOperateInstitution()); + compareField(logContent, logIndex++, "竞争对手", oldProjectInfo.getCompetitor(), projectInfo.getCompetitor()); +// compareField(logContent, logIndex++, "项目类型", oldProjectInfo.getProjectType(), projectInfo.getProjectType()); +// compareField(logContent, logIndex++, "项目状态", oldProjectInfo.getProjectStatus(), projectInfo.getProjectStatus()); +// compareField(logContent, logIndex++, "项目经理", oldProjectInfo.getProjectManager(), projectInfo.getProjectManager()); +// compareField(logContent, logIndex++, "预期收益", oldProjectInfo.getExpectedRevenue(), projectInfo.getExpectedRevenue()); +// compareField(logContent, logIndex++, "实际收益", oldProjectInfo.getActualRevenue(), projectInfo.getActualRevenue()); +// compareField(logContent, logIndex++, "开始日期", oldProjectInfo.getStartDate(), projectInfo.getStartDate()); +// compareField(logContent, logIndex++, "结束日期", oldProjectInfo.getEndDate(), projectInfo.getEndDate()); +// compareField(logContent, logIndex++, "风险等级", oldProjectInfo.getRiskLevel(), projectInfo.getRiskLevel()); +// compareField(logContent, logIndex++, "备注", oldProjectInfo.getRemarks(), projectInfo.getRemarks()); + + // 插入操作日志 + if (logContent.length() > 0) { + ProjectOperateLog operateLog = new ProjectOperateLog(); + operateLog.setProjectId(projectInfo.getId()); + operateLog.setOperateLog(logContent.toString()); + operateLog.setOperateTime(DateUtils.getNowDate()); + operateLog.setOperateUser(ShiroUtils.getUserId().toString()); + operateLogService.insertProjectOperateLog(operateLog); + } + + return result; + } + + /** + * 比较字段并生成日志内容 + * + * @param logContent 日志内容构建器 + * @param index 日志索引 + * @param fieldName 字段名称 + * @param oldValue 旧值 + * @param newValue 新值 + */ + private void compareField(StringBuilder logContent, int index, String fieldName, Object oldValue, Object newValue) { + if (!oldValue.equals(newValue)) { + logContent.append(index).append(".") + .append(fieldName) + .append("由‘") + .append(oldValue) + .append("’变更为‘") + .append(newValue) + .append("’\n"); + } + } + + /** + * 批量删除项目管理 + * + * @param ids 需要删除的项目管理主键 + * @return 结果 + */ + @Override + public int deleteProjectInfoByIds(String ids) { + return projectInfoMapper.deleteProjectInfoByIds(Convert.toStrArray(ids)); + } + + /** + * 删除项目管理信息 + * + * @param id 项目管理主键 + * @return 结果 + */ + @Override + public int deleteProjectInfoById(Long id) { + return projectInfoMapper.deleteProjectInfoById(id); + } +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOperateLogServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOperateLogServiceImpl.java new file mode 100644 index 00000000..070ec2c8 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOperateLogServiceImpl.java @@ -0,0 +1,100 @@ +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.ProjectOperateLogMapper; +import com.ruoyi.sip.domain.ProjectOperateLog; +import com.ruoyi.sip.service.IProjectOperateLogService; +import com.ruoyi.common.core.text.Convert; + +/** + * 项目操作日志Service业务层处理 + * + * @author ruoyi + * @date 2025-05-29 + */ +@Service +public class ProjectOperateLogServiceImpl implements IProjectOperateLogService +{ + @Autowired + private ProjectOperateLogMapper projectOperateLogMapper; + + /** + * 查询项目操作日志 + * + * @param id 项目操作日志主键 + * @return 项目操作日志 + */ + @Override + public ProjectOperateLog selectProjectOperateLogById(Long id) + { + return projectOperateLogMapper.selectProjectOperateLogById(id); + } + + /** + * 查询项目操作日志列表 + * + * @param projectOperateLog 项目操作日志 + * @return 项目操作日志 + */ + @Override + public List selectProjectOperateLogList(ProjectOperateLog projectOperateLog) + { + return projectOperateLogMapper.selectProjectOperateLogList(projectOperateLog); + } + + /** + * 新增项目操作日志 + * + * @param projectOperateLog 项目操作日志 + * @return 结果 + */ + @Override + public int insertProjectOperateLog(ProjectOperateLog projectOperateLog) + { + return projectOperateLogMapper.insertProjectOperateLog(projectOperateLog); + } + + /** + * 修改项目操作日志 + * + * @param projectOperateLog 项目操作日志 + * @return 结果 + */ + @Override + public int updateProjectOperateLog(ProjectOperateLog projectOperateLog) + { + return projectOperateLogMapper.updateProjectOperateLog(projectOperateLog); + } + + /** + * 批量删除项目操作日志 + * + * @param ids 需要删除的项目操作日志主键 + * @return 结果 + */ + @Override + public int deleteProjectOperateLogByIds(String ids) + { + return projectOperateLogMapper.deleteProjectOperateLogByIds(Convert.toStrArray(ids)); + } + + /** + * 删除项目操作日志信息 + * + * @param id 项目操作日志主键 + * @return 结果 + */ + @Override + public int deleteProjectOperateLogById(Long id) + { + return projectOperateLogMapper.deleteProjectOperateLogById(id); + } + + @Override + public List selectProjectOperateLogListByProjectId(Long id) { + return projectOperateLogMapper.selectProjectOperateLogListByProjectId(id); + } +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectProductInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectProductInfoServiceImpl.java new file mode 100644 index 00000000..197cb894 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectProductInfoServiceImpl.java @@ -0,0 +1,113 @@ +package com.ruoyi.sip.service.impl; + +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.sip.mapper.ProjectProductInfoMapper; +import com.ruoyi.sip.domain.ProjectProductInfo; +import com.ruoyi.sip.service.IProjectProductInfoService; +import com.ruoyi.common.core.text.Convert; + +/** + * 项目产品信息Service业务层处理 + * + * @author ruoyi + * @date 2025-05-29 + */ +@Service +public class ProjectProductInfoServiceImpl implements IProjectProductInfoService { + @Autowired + private ProjectProductInfoMapper projectProductInfoMapper; + + /** + * 查询项目产品信息 + * + * @param id 项目产品信息主键 + * @return 项目产品信息 + */ + @Override + public ProjectProductInfo selectProjectProductInfoById(Long id) { + return projectProductInfoMapper.selectProjectProductInfoById(id); + } + + /** + * 查询项目产品信息列表 + * + * @param projectProductInfo 项目产品信息 + * @return 项目产品信息 + */ + @Override + public List selectProjectProductInfoList(ProjectProductInfo projectProductInfo) { + return projectProductInfoMapper.selectProjectProductInfoList(projectProductInfo); + } + + /** + * 新增项目产品信息 + * + * @param projectProductInfo 项目产品信息 + * @return 结果 + */ + @Override + public int insertProjectProductInfo(ProjectProductInfo projectProductInfo) { + return projectProductInfoMapper.insertProjectProductInfo(projectProductInfo); + } + + /** + * 修改项目产品信息 + * + * @param projectProductInfo 项目产品信息 + * @return 结果 + */ + @Override + public int updateProjectProductInfo(ProjectProductInfo projectProductInfo) { + return projectProductInfoMapper.updateProjectProductInfo(projectProductInfo); + } + + /** + * 批量删除项目产品信息 + * + * @param ids 需要删除的项目产品信息主键 + * @return 结果 + */ + @Override + public int deleteProjectProductInfoByIds(String ids) { + return projectProductInfoMapper.deleteProjectProductInfoByIds(Convert.toStrArray(ids)); + } + + /** + * 删除项目产品信息信息 + * + * @param id 项目产品信息主键 + * @return 结果 + */ + @Override + public int deleteProjectProductInfoById(Long id) { + return projectProductInfoMapper.deleteProjectProductInfoById(id); + } + + @Override + public List selectProjectProductInfoListByProjectId(Long projectId) { + return projectProductInfoMapper.selectProjectProductInfoListByProjectId(projectId); + } + + @Override + public void saveBatch(List addList) { + List projectProductInfos = projectProductInfoMapper.selectProjectProductInfoListByProjectId(addList.get(0).getProjectId()); + Set idSet = addList.stream().map(ProjectProductInfo::getId).collect(Collectors.toSet()); + String[] deleteIds = projectProductInfos.stream().filter(item -> !idSet.contains(item.getId())).map(item -> item.getId().toString()).toArray(String[]::new); + //删除数据 + if (deleteIds.length > 0) { + projectProductInfoMapper.deleteProjectProductInfoByIds(deleteIds); + } + //新增数据 + projectProductInfoMapper.saveBatch(addList); + //todo 记录变更信息 + + + + } +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectWorkProgressServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectWorkProgressServiceImpl.java new file mode 100644 index 00000000..4c365f45 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectWorkProgressServiceImpl.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.ProjectWorkProgressMapper; +import com.ruoyi.sip.domain.ProjectWorkProgress; +import com.ruoyi.sip.service.IProjectWorkProgressService; +import com.ruoyi.common.core.text.Convert; + +/** + * 项目工作进度Service业务层处理 + * + * @author ruoyi + * @date 2025-05-29 + */ +@Service +public class ProjectWorkProgressServiceImpl implements IProjectWorkProgressService +{ + @Autowired + private ProjectWorkProgressMapper projectWorkProgressMapper; + + /** + * 查询项目工作进度 + * + * @param id 项目工作进度主键 + * @return 项目工作进度 + */ + @Override + public ProjectWorkProgress selectProjectWorkProgressById(Long id) + { + return projectWorkProgressMapper.selectProjectWorkProgressById(id); + } + + /** + * 查询项目工作进度列表 + * + * @param projectWorkProgress 项目工作进度 + * @return 项目工作进度 + */ + @Override + public List selectProjectWorkProgressList(ProjectWorkProgress projectWorkProgress) + { + return projectWorkProgressMapper.selectProjectWorkProgressList(projectWorkProgress); + } + + /** + * 新增项目工作进度 + * + * @param projectWorkProgress 项目工作进度 + * @return 结果 + */ + @Override + public int insertProjectWorkProgress(ProjectWorkProgress projectWorkProgress) + { + return projectWorkProgressMapper.insertProjectWorkProgress(projectWorkProgress); + } + + /** + * 修改项目工作进度 + * + * @param projectWorkProgress 项目工作进度 + * @return 结果 + */ + @Override + public int updateProjectWorkProgress(ProjectWorkProgress projectWorkProgress) + { + return projectWorkProgressMapper.updateProjectWorkProgress(projectWorkProgress); + } + + /** + * 批量删除项目工作进度 + * + * @param ids 需要删除的项目工作进度主键 + * @return 结果 + */ + @Override + public int deleteProjectWorkProgressByIds(String ids) + { + return projectWorkProgressMapper.deleteProjectWorkProgressByIds(Convert.toStrArray(ids)); + } + + /** + * 删除项目工作进度信息 + * + * @param id 项目工作进度主键 + * @return 结果 + */ + @Override + public int deleteProjectWorkProgressById(Long id) + { + return projectWorkProgressMapper.deleteProjectWorkProgressById(id); + } + + @Override + public List selectProjectWorkProgressListByProjectId(Long projectId) { + return projectWorkProgressMapper.selectProjectWorkProgressListByProjectId(projectId); + } + + @Override + public void insertIgnoreBatch(List projectWorkProgressList) { + projectWorkProgressMapper.insertIgnoreBatch(projectWorkProgressList); + } +} diff --git a/ruoyi-sip/src/main/resources/mapper/manage/OrderDeliveryMapper.xml b/ruoyi-sip/src/main/resources/mapper/manage/OrderDeliveryMapper.xml index b3cf65c5..56b8d071 100644 --- a/ruoyi-sip/src/main/resources/mapper/manage/OrderDeliveryMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/manage/OrderDeliveryMapper.xml @@ -43,6 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and t1.delivery_type = #{deliveryType} and t1.logistics_company = #{logisticsCompany} and t1.delivery_status = #{deliveryStatus} + and t2.order_name like concat('%', #{orderName},'%') order by t1.order_id,t1.delivery_date diff --git a/ruoyi-sip/src/main/resources/mapper/sip/ProjectInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/ProjectInfoMapper.xml new file mode 100644 index 00000000..674e5c08 --- /dev/null +++ b/ruoyi-sip/src/main/resources/mapper/sip/ProjectInfoMapper.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, project_code, project_name, customer_code, customer_name, industry_type, province, project_stage, project_grasp_degree, hz_support_user, operate_institution, partner_code, contact_way, estimated_amount, currency_type, estimated_order_time, estimated_deliver_time, competitor, country_product, server_configuration, key_problem, project_desc, create_by, create_time, update_by, update_time from project_info + + + + + + + + + insert into project_info + + project_code, + project_name, + customer_code, + customer_name, + industry_type, + province, + project_stage, + project_grasp_degree, + hz_support_user, + operate_institution, + partner_code, + contact_way, + estimated_amount, + currency_type, + estimated_order_time, + estimated_deliver_time, + competitor, + country_product, + server_configuration, + key_problem, + project_desc, + create_by, + create_time, + update_by, + update_time, + + + #{projectCode}, + #{projectName}, + #{customerCode}, + #{customerName}, + #{industryType}, + #{province}, + #{projectStage}, + #{projectGraspDegree}, + #{hzSupportUser}, + #{operateInstitution}, + #{partnerCode}, + #{contactWay}, + #{estimatedAmount}, + #{currencyType}, + #{estimatedOrderTime}, + #{estimatedDeliverTime}, + #{competitor}, + #{countryProduct}, + #{serverConfiguration}, + #{keyProblem}, + #{projectDesc}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update project_info + + project_code = #{projectCode}, + project_name = #{projectName}, + customer_code = #{customerCode}, + customer_name = #{customerName}, + industry_type = #{industryType}, + province = #{province}, + project_stage = #{projectStage}, + project_grasp_degree = #{projectGraspDegree}, + hz_support_user = #{hzSupportUser}, + operate_institution = #{operateInstitution}, + partner_code = #{partnerCode}, + contact_way = #{contactWay}, + estimated_amount = #{estimatedAmount}, + currency_type = #{currencyType}, + estimated_order_time = #{estimatedOrderTime}, + estimated_deliver_time = #{estimatedDeliverTime}, + competitor = #{competitor}, + country_product = #{countryProduct}, + server_configuration = #{serverConfiguration}, + key_problem = #{keyProblem}, + project_desc = #{projectDesc}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from project_info where id = #{id} + + + + delete from project_info where id in + + #{id} + + + + \ No newline at end of file diff --git a/ruoyi-sip/src/main/resources/mapper/sip/ProjectOperateLogMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/ProjectOperateLogMapper.xml new file mode 100644 index 00000000..f9e5fbd3 --- /dev/null +++ b/ruoyi-sip/src/main/resources/mapper/sip/ProjectOperateLogMapper.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + select id, operate_log, operate_user, operate_time, project_id from project_operate_log + + + + + + + + + insert into project_operate_log + + id, + operate_log, + operate_user, + operate_time, + project_id, + + + #{id}, + #{operateLog}, + #{operateUser}, + #{operateTime}, + #{projectId}, + + + + + update project_operate_log + + operate_log = #{operateLog}, + operate_user = #{operateUser}, + operate_time = #{operateTime}, + project_id = #{projectId}, + + where id = #{id} + + + + delete from project_operate_log where id = #{id} + + + + delete from project_operate_log where id in + + #{id} + + + + \ No newline at end of file diff --git a/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml new file mode 100644 index 00000000..e0965937 --- /dev/null +++ b/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + select id, project_id, product_code, quantity, remark from project_product_info + + + + + + + + + insert into project_product_info + + project_id, + product_code, + quantity, + remark, + + + #{projectId}, + #{productCode}, + #{quantity}, + #{remark}, + + + + insert into project_product_info (project_id, product_code, quantity, remark) values + + (#{item.projectId}, #{item.productCode}, #{item.quantity}, #{item.remark}) + + on duplicate key update product_code = values(product_code), quantity = values(quantity), remark = values(remark) + + + + update project_product_info + + project_id = #{projectId}, + product_code = #{productCode}, + quantity = #{quantity}, + remark = #{remark}, + + where id = #{id} + + + + delete from project_product_info where id = #{id} + + + + delete from project_product_info where id in + + #{id} + + + + \ No newline at end of file diff --git a/ruoyi-sip/src/main/resources/mapper/sip/ProjectWorkProgressMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/ProjectWorkProgressMapper.xml new file mode 100644 index 00000000..472f4cef --- /dev/null +++ b/ruoyi-sip/src/main/resources/mapper/sip/ProjectWorkProgressMapper.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + select id, work_content, work_user, work_time, project_id from project_work_progress + + + + + + + + + insert into project_work_progress + + work_content, + work_user, + work_time, + project_id, + + + #{workContent}, + #{workUser}, + #{workTime}, + #{projectId}, + + + + insert ignore into project_work_progress (work_content, work_user, work_time, project_id) values + + (#{item.workContent}, #{item.workUser}, #{item.workTime}, #{item.projectId}) + + + + + update project_work_progress + + work_content = #{workContent}, + work_user = #{workUser}, + work_time = #{workTime}, + project_id = #{projectId}, + + where id = #{id} + + + + delete from project_work_progress where id = #{id} + + + + delete from project_work_progress where id in + + #{id} + + + + \ No newline at end of file