src/main/java/com/ruoyi/oA/controller/OaProjectController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,76 @@ package com.ruoyi.oA.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedger; import com.ruoyi.oA.dto.OaProjectDto; import com.ruoyi.oA.pojo.OaProject; import com.ruoyi.oA.service.OaProjectService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.List; @Api(tags = "oA项ç®ç®¡ç") @RestController @RequestMapping("/oA/project") public class OaProjectController { @Autowired private OaProjectService oaProjectService; @ApiOperation("è·å项ç®å表") @GetMapping("/listPage") public AjaxResult listPage(Page page, OaProjectDto oaProjectDto) { IPage<OaProjectDto> listPage = oaProjectService.listPage(page, oaProjectDto); return AjaxResult.success(listPage); } @ApiOperation("è·å项ç®å表详æ ") @GetMapping("/getList") public AjaxResult getList(Page page, OaProjectDto oaProjectDto) { IPage<OaProjectDto> listPage = oaProjectService.listPage(page, oaProjectDto); HashMap<Object, Object> Map = new HashMap<>(); listPage.getRecords().forEach(item -> { Map.put(item.getProjectId(), item); }); return AjaxResult.success(Map); } @ApiOperation("墿·»é¡¹ç®") @PostMapping("/add") public AjaxResult add(@RequestBody OaProject oaProject) { boolean save = oaProjectService.save(oaProject); return AjaxResult.success(save); } @ApiOperation("å é¤é¡¹ç®") @DeleteMapping("/delete/{id}") public AjaxResult delete(@PathVariable Long id) { boolean remove = oaProjectService.deleteById(id); return AjaxResult.success(remove); } @ApiOperation("æ´æ°é¡¹ç®") @PostMapping("/update") public AjaxResult update(@RequestBody OaProject oaProject) { boolean update = oaProjectService.updateById(oaProject); return AjaxResult.success(update); } // @ApiOperation("æ ¹æ®IDè·å项ç®è¯¦æ ") // @GetMapping("/getById") // public AjaxResult getById(Long id) { // OaProject oaProject = oaProjectService.getById(id); // return AjaxResult.success(oaProject); // } @ApiOperation("å¯¼åºæé项ç®") @PostMapping("/export/{ids}") public void export(HttpServletResponse response,@PathVariable("ids") List<Long> ids) { if (CollectionUtils.isEmpty(ids)) { throw new IllegalArgumentException("导åºé¡¹ç®å表ä¸è½ä¸ºç©º"); } oaProjectService.export(response, ids); } } src/main/java/com/ruoyi/oA/controller/OaProjectPhaseController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,41 @@ package com.ruoyi.oA.controller; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.oA.pojo.OaProjectPhase; import com.ruoyi.oA.service.OaProjectPhaseService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @Api(tags = "oA项ç®é¶æ®µç®¡ç") @RestController @RequestMapping("/oA/projectPhase") public class OaProjectPhaseController { @Autowired private OaProjectPhaseService oaProjectPhaseService; @ApiOperation("æ°å¢é¡¹ç®é¶æ®µ") @PostMapping("/add") public AjaxResult add(@RequestBody OaProjectPhase oaProjectPhase) { return AjaxResult.success(oaProjectPhaseService.save(oaProjectPhase)); } @ApiOperation("å é¤é¡¹ç®é¶æ®µ") @DeleteMapping("/delete/{phaseId}") public AjaxResult delete(@PathVariable Integer phaseId) { return AjaxResult.success(oaProjectPhaseService.deleteById(phaseId)); } @ApiOperation("æ´æ°é¡¹ç®é¶æ®µ") @PostMapping("/update") public AjaxResult update(@RequestBody OaProjectPhase oaProjectPhase) { return AjaxResult.success(oaProjectPhaseService.updateById(oaProjectPhase)); } @ApiOperation("æ ¹æ®é¡¹ç®idæ¥è¯¢é¡¹ç®é¶æ®µå表") @GetMapping("/listByProjectId/{projectId}") public AjaxResult listByProjectId(@PathVariable Integer projectId) { return AjaxResult.success(oaProjectPhaseService.listByProjectId(projectId)); } } src/main/java/com/ruoyi/oA/controller/OaProjectPhaseTaskController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,41 @@ package com.ruoyi.oA.controller; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.oA.pojo.OaProjectPhaseTask; import com.ruoyi.oA.service.OaProjectPhaseTaskService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @Api(tags = "oA项ç®é¶æ®µä»»å¡ç®¡ç") @RestController @RequestMapping("/oA/projectPhaseTask") public class OaProjectPhaseTaskController { @Autowired private OaProjectPhaseTaskService oaProjectPhaseTaskService; @ApiOperation("æ°å¢é¡¹ç®é¶æ®µä»»å¡") @PostMapping("/add") public AjaxResult add(@RequestBody OaProjectPhaseTask oaProjectPhaseTask) { return AjaxResult.success(oaProjectPhaseTaskService.save(oaProjectPhaseTask)); } @ApiOperation("æ ¹æ®é¡¹ç®é¶æ®µidæ¥è¯¢é¡¹ç®é¶æ®µä»»å¡å表") @GetMapping("/listByPhaseId/{phaseId}") public AjaxResult listByPhaseId(@PathVariable Integer phaseId) { return AjaxResult.success(oaProjectPhaseTaskService.listByPhaseId(phaseId)); } @ApiOperation("å é¤é¡¹ç®é¶æ®µä»»å¡") @DeleteMapping("/delete/{taskId}") public AjaxResult delete(@PathVariable Integer taskId) { return AjaxResult.success(oaProjectPhaseTaskService.removeById(taskId)); } @ApiOperation("æ´æ°é¡¹ç®é¶æ®µä»»å¡") @PostMapping("/update") public AjaxResult update(@RequestBody OaProjectPhaseTask oaProjectPhaseTask) { return AjaxResult.success(oaProjectPhaseTaskService.updateById(oaProjectPhaseTask)); } } src/main/java/com/ruoyi/oA/dto/OaProjectDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ package com.ruoyi.oA.dto; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.oA.pojo.OaProject; import com.ruoyi.oA.pojo.OaProjectPhase; import com.ruoyi.oA.pojo.OaProjectPhaseTask; import lombok.Data; import java.util.List; @Data public class OaProjectDto extends OaProject { /** * è´è´£äººåç§° */ @Excel(name = "è´è´£äººåç§°") private String managerName; /** * 项ç®é¶æ®µå表 */ private List<OaProjectPhaseDto> oaProjectPhasesDto; // /** // * 项ç®é¶æ®µä»»å¡å表 // */ // private List<OaProjectPhaseTask> oaProjectPhaseTasks; } src/main/java/com/ruoyi/oA/dto/OaProjectPhaseDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ package com.ruoyi.oA.dto; import com.ruoyi.oA.pojo.OaProjectPhase; import com.ruoyi.oA.pojo.OaProjectPhaseTask; import lombok.Data; import java.util.List; @Data public class OaProjectPhaseDto extends OaProjectPhase { private List<OaProjectPhaseTask> oaProjectPhaseTasks; } src/main/java/com/ruoyi/oA/mapper/OaProjectMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.ruoyi.oA.mapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.oA.dto.OaProjectDto; import com.ruoyi.oA.pojo.OaProject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** * @author ywx * @description é对表ãoa_project(OAç³»ç»-项ç®ä»»å¡åå-项ç®è¡¨)ãçæ°æ®åºæä½Mapper * @createDate 2025-09-24 09:18:46 * @Entity com.ruoyi.oA.pojo.OaProject */ public interface OaProjectMapper extends BaseMapper<OaProject> { IPage<OaProjectDto> listPage(Page page,@Param("req") OaProjectDto oaProjectDto); List<OaProjectDto> selectByIds(List<Long> ids); } src/main/java/com/ruoyi/oA/mapper/OaProjectPhaseMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.ruoyi.oA.mapper; import com.ruoyi.oA.pojo.OaProjectPhase; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @author ywx * @description é对表ãoa_project_phase(OAç³»ç»-项ç®é¶æ®µè¡¨)ãçæ°æ®åºæä½Mapper * @createDate 2025-09-24 09:18:46 * @Entity com.ruoyi.oA.pojo.OaProjectPhase */ public interface OaProjectPhaseMapper extends BaseMapper<OaProjectPhase> { } src/main/java/com/ruoyi/oA/mapper/OaProjectPhaseTaskMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.ruoyi.oA.mapper; import com.ruoyi.oA.pojo.OaProjectPhaseTask; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @author ywx * @description é对表ãoa_project_phase_task(OAç³»ç»-项ç®é¶æ®µ-ä»»å¡è¡¨)ãçæ°æ®åºæä½Mapper * @createDate 2025-09-24 09:18:46 * @Entity com.ruoyi.oA.pojo.OaProjectPhaseTask */ public interface OaProjectPhaseTaskMapper extends BaseMapper<OaProjectPhaseTask> { } src/main/java/com/ruoyi/oA/pojo/OaProject.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,107 @@ package com.ruoyi.oA.pojo; import com.baomidou.mybatisplus.annotation.*; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; /** * OAç³»ç»-项ç®ä»»å¡åå-项ç®è¡¨ * @TableName oa_project */ @TableName(value ="oa_project") @Data public class OaProject implements Serializable { /** * */ @TableId(type = IdType.AUTO) private Integer projectId; /** * 项ç®åç§° */ @Excel(name = "项ç®åç§°") private String projectName; /** * é¡¹ç®æè¿° */ @Excel(name = "é¡¹ç®æè¿°") private String description; /** * å¼å§æ¶é´ */ @Excel(name = "å¼å§æ¶é´") @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate startDate; /** * ç»ææ¶é´ */ @Excel(name = "ç»ææ¶é´") @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate endDate; /** * ç¶æ */ @Excel(name = "ç¶æ") private String status; /** * å®æåº¦ */ @Excel(name = "å®æåº¦") private Integer completionRate; /** * è´è´£äººid */ private Long managerId; /** * åå»ºç¨æ· */ @TableField(fill = FieldFill.INSERT) private Integer createUser; /** * å建æ¶é´ */ @TableField(fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; /** * ä¿®æ¹ç¨æ· */ @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; /** * ä¿®æ¹æ¶é´ */ @TableField(fill = FieldFill.INSERT_UPDATE) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; /** * ç§æ·ID */ @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/oA/pojo/OaProjectPhase.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,92 @@ package com.ruoyi.oA.pojo; import com.baomidou.mybatisplus.annotation.*; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; /** * OAç³»ç»-项ç®é¶æ®µè¡¨ * @TableName oa_project_phase */ @TableName(value ="oa_project_phase") @Data public class OaProjectPhase implements Serializable { /** * */ @TableId(type = IdType.AUTO) private Integer phaseId; /** * 项ç®é¶æ®µåç§° */ private String phaseName; /** * oa_project表id */ private Integer oaProjectId; /** * å¼å§æ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate startDate; /** * ç»ææ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate endDate; /** * ç¶æ */ private String status; /** * åå»ºç¨æ· */ @TableField(fill = FieldFill.INSERT) private Integer createUser; /** * å建æ¶é´ */ @TableField(fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; /** * ä¿®æ¹ç¨æ· */ @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; /** * ä¿®æ¹æ¶é´ */ @TableField(fill = FieldFill.INSERT_UPDATE) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; /** * ç§æ·ID */ @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/oA/pojo/OaProjectPhaseTask.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,117 @@ package com.ruoyi.oA.pojo; import com.baomidou.mybatisplus.annotation.*; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; /** * OAç³»ç»-项ç®é¶æ®µ-ä»»å¡è¡¨ * @TableName oa_project_phase_task */ @TableName(value ="oa_project_phase_task") @Data public class OaProjectPhaseTask implements Serializable { /** * */ @TableId(type = IdType.AUTO) private Integer taskId; /** * 项ç®é¶æ®µä»»å¡åç§° */ private String taskName; /** * oa_project_phase表id */ private Integer phaseId; /** * å¼å§æ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate startDate; /** * ç»ææ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate endDate; /** * ç®æ ä»»å¡å®ææ¥æ */ @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate targetDate; /** * ç®æ å¼ */ private Integer targetValue; /** * å½åå¼ */ private Integer currentValue; /** * åä½ */ private String unit; /** * ç¶æ */ private String status; /** * å®æåº¦ */ private Integer completionRate; /** * åå»ºç¨æ· */ @TableField(fill = FieldFill.INSERT) private Integer createUser; /** * å建æ¶é´ */ @TableField(fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; /** * ä¿®æ¹ç¨æ· */ @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; /** * ä¿®æ¹æ¶é´ */ @TableField(fill = FieldFill.INSERT_UPDATE) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; /** * ç§æ·ID */ @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/oA/service/OaProjectPhaseService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ package com.ruoyi.oA.service; import com.ruoyi.oA.dto.OaProjectPhaseDto; import com.ruoyi.oA.pojo.OaProjectPhase; import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import java.util.List; /** * @author ywx * @description é对表ãoa_project_phase(OAç³»ç»-项ç®é¶æ®µè¡¨)ãçæ°æ®åºæä½Service * @createDate 2025-09-24 09:18:46 */ public interface OaProjectPhaseService extends IService<OaProjectPhase> { List<OaProjectPhaseDto> listByProjectId(Integer oaProjectId); boolean deleteById(Integer phaseId); } src/main/java/com/ruoyi/oA/service/OaProjectPhaseTaskService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.ruoyi.oA.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.oA.pojo.OaProjectPhaseTask; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; /** * @author ywx * @description é对表ãoa_project_phase_task(OAç³»ç»-项ç®é¶æ®µ-ä»»å¡è¡¨)ãçæ°æ®åºæä½Service * @createDate 2025-09-24 09:18:46 */ public interface OaProjectPhaseTaskService extends IService<OaProjectPhaseTask> { List<OaProjectPhaseTask> listByPhaseId(Integer phaseId); } src/main/java/com/ruoyi/oA/service/OaProjectService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package com.ruoyi.oA.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.oA.dto.OaProjectDto; import com.ruoyi.oA.pojo.OaProject; import com.baomidou.mybatisplus.extension.service.IService; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * @author ywx * @description é对表ãoa_project(OAç³»ç»-项ç®ä»»å¡åå-项ç®è¡¨)ãçæ°æ®åºæä½Service * @createDate 2025-09-24 09:18:46 */ public interface OaProjectService extends IService<OaProject> { IPage<OaProjectDto> listPage(Page page, OaProjectDto oaProjectDto); void export(HttpServletResponse response, List<Long> ids); boolean deleteById(Long id); } src/main/java/com/ruoyi/oA/service/impl/OaProjectPhaseServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,62 @@ package com.ruoyi.oA.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.oA.dto.OaProjectPhaseDto; import com.ruoyi.oA.pojo.OaProjectPhase; import com.ruoyi.oA.pojo.OaProjectPhaseTask; import com.ruoyi.oA.service.OaProjectPhaseService; import com.ruoyi.oA.mapper.OaProjectPhaseMapper; import com.ruoyi.oA.service.OaProjectPhaseTaskService; import lombok.val; import org.hibernate.validator.constraints.br.TituloEleitoral; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; /** * @author ywx * @description é对表ãoa_project_phase(OAç³»ç»-项ç®é¶æ®µè¡¨)ãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-09-24 09:18:46 */ @Service @Transactional(rollbackFor = Exception.class) public class OaProjectPhaseServiceImpl extends ServiceImpl<OaProjectPhaseMapper, OaProjectPhase> implements OaProjectPhaseService{ @Autowired private OaProjectPhaseMapper oaProjectPhaseMapper; @Autowired private OaProjectPhaseTaskService oaProjectPhaseTaskService; @Override public List<OaProjectPhaseDto> listByProjectId(Integer oaProjectId) { List<OaProjectPhase> oaProjectPhases = oaProjectPhaseMapper.selectList(new LambdaQueryWrapper<OaProjectPhase>() .eq(OaProjectPhase::getOaProjectId, oaProjectId)); List<OaProjectPhaseDto> collect = oaProjectPhases.stream().map(oaProjectPhase -> { OaProjectPhaseDto oaProjectPhaseDto = new OaProjectPhaseDto(); BeanUtils.copyProperties(oaProjectPhase, oaProjectPhaseDto); // List<OaProjectPhaseTask> oaProjectPhaseTasks = oaProjectPhaseTaskService.listByPhaseId(oaProjectPhaseDto.getPhaseId()); oaProjectPhaseDto.setOaProjectPhaseTasks(oaProjectPhaseTaskService.listByPhaseId(oaProjectPhaseDto.getPhaseId())); return oaProjectPhaseDto; }).collect(Collectors.toList()); return collect; } @Override public boolean deleteById(Integer phaseId) { // å å é¤é¡¹ç®é¶æ®µä¸çä»»å¡ oaProjectPhaseTaskService.remove(new LambdaQueryWrapper<OaProjectPhaseTask>() .eq(OaProjectPhaseTask::getPhaseId, phaseId)); return oaProjectPhaseMapper.deleteById(phaseId) > 0; } } src/main/java/com/ruoyi/oA/service/impl/OaProjectPhaseTaskServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,33 @@ package com.ruoyi.oA.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.oA.pojo.OaProjectPhaseTask; import com.ruoyi.oA.service.OaProjectPhaseTaskService; import com.ruoyi.oA.mapper.OaProjectPhaseTaskMapper; import org.springframework.stereotype.Service; import java.util.List; /** * @author ywx * @description é对表ãoa_project_phase_task(OAç³»ç»-项ç®é¶æ®µ-ä»»å¡è¡¨)ãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-09-24 09:18:46 */ @Service public class OaProjectPhaseTaskServiceImpl extends ServiceImpl<OaProjectPhaseTaskMapper, OaProjectPhaseTask> implements OaProjectPhaseTaskService{ @Override public List<OaProjectPhaseTask> listByPhaseId(Integer phaseId) { return baseMapper.selectList(new LambdaQueryWrapper<OaProjectPhaseTask>() .eq(OaProjectPhaseTask::getPhaseId, phaseId)); } } src/main/java/com/ruoyi/oA/service/impl/OaProjectServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,69 @@ package com.ruoyi.oA.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord; import com.ruoyi.oA.dto.OaProjectDto; import com.ruoyi.oA.pojo.OaProject; import com.ruoyi.oA.pojo.OaProjectPhase; import com.ruoyi.oA.service.OaProjectPhaseService; import com.ruoyi.oA.service.OaProjectService; import com.ruoyi.oA.mapper.OaProjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * @author ywx * @description é对表ãoa_project(OAç³»ç»-项ç®ä»»å¡åå-项ç®è¡¨)ãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-09-24 09:18:45 */ @Service @Transactional(rollbackFor = Exception.class) public class OaProjectServiceImpl extends ServiceImpl<OaProjectMapper, OaProject> implements OaProjectService{ @Autowired private OaProjectMapper oaProjectMapper; @Autowired private OaProjectPhaseService oaProjectPhaseService; @Override public IPage<OaProjectDto> listPage(Page page, OaProjectDto oaProjectDto) { IPage<OaProjectDto> iPage = oaProjectMapper.listPage(page, oaProjectDto); // 项ç®é¶æ®µå表 for (OaProjectDto projectDto : iPage.getRecords()) { projectDto.setOaProjectPhasesDto(oaProjectPhaseService.listByProjectId(projectDto.getProjectId())); } return iPage; } @Override public void export(HttpServletResponse response, List<Long> ids) { List<OaProjectDto> list = oaProjectMapper.selectByIds(ids); ExcelUtil<OaProjectDto> util = new ExcelUtil<OaProjectDto>(OaProjectDto.class); util.exportExcel(response, list , "é¡¹ç®æ°æ®"); } @Override public boolean deleteById(Long id) { // å å é¤é¡¹ç®ä¸çé¶æ®µ List<OaProjectPhase> oaProjectPhases = oaProjectPhaseService.list(new LambdaQueryWrapper<OaProjectPhase>() .eq(OaProjectPhase::getOaProjectId, id)); if (!oaProjectPhases.isEmpty()) { oaProjectPhases.forEach(oaProjectPhase -> { oaProjectPhaseService.deleteById(oaProjectPhase.getPhaseId()); }); } return oaProjectMapper.deleteById(id) > 0; } } src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
@@ -43,6 +43,11 @@ */ @Excel(name = "å¾ åºåºæ°é") private BigDecimal inboundNum0; /** * åºåºæ°é */ @Excel(name = "åºåºæ°é") private BigDecimal totalInboundNum; /** * æä½åºåæ°é src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -431,7 +431,8 @@ BigDecimal totalInboundNum = collect1.stream() .map(ProcurementRecordOut::getInboundNum) .reduce(BigDecimal.ZERO, BigDecimal::add); // åºåºæ°é = æ»æ°é - å¾ åºåºæ°é dto.setTotalInboundNum(totalInboundNum); // å¾ åºåºæ°é = æ»æ°é - å·²åºåºæ°é dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum)); } src/main/resources/mapper/oA/OaProjectMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.oA.mapper.OaProjectMapper"> <select id="listPage" resultType="com.ruoyi.oA.dto.OaProjectDto"> select op.*,su.nick_name as managerName from oa_project op LEFT JOIN sys_user su ON op.manager_id=su.user_id <where> 1=1 <if test="req.projectName != null and req.projectName != ''"> and op.project_name like concat('%',#{req.projectName},'%') </if> <if test="req.managerName != null and req.managerName != ''"> and su.nick_name like concat('%',#{req.managerName},'%') </if> <if test="req.status != null and req.status != ''"> and op.status = #{req.status} </if> </where> </select> <select id="selectByIds" resultType="com.ruoyi.oA.dto.OaProjectDto"> select op.*,su.nick_name as managerName from oa_project op LEFT JOIN sys_user su ON op.manager_id=su.user_id where op.project_id in <foreach collection="ids" item="id" open="(" close=")" separator=","> #{id} </foreach> </select> </mapper> src/main/resources/mapper/oA/OaProjectPhaseMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.oA.mapper.OaProjectPhaseMapper"> <resultMap id="BaseResultMap" type="com.ruoyi.oA.pojo.OaProjectPhase"> <id property="phaseId" column="phase_id" jdbcType="INTEGER"/> <result property="phaseName" column="phase_name" jdbcType="VARCHAR"/> <result property="oaProjectId" column="oa_project_id" jdbcType="INTEGER"/> <result property="startDate" column="start_date" jdbcType="TIMESTAMP"/> <result property="endDate" column="end_date" jdbcType="TIMESTAMP"/> <result property="status" column="status" jdbcType="VARCHAR"/> <result property="createUser" column="create_user" jdbcType="BIGINT"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <result property="updateUser" column="update_user" jdbcType="BIGINT"/> <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> <result property="tenantId" column="tenant_id" jdbcType="BIGINT"/> </resultMap> <sql id="Base_Column_List"> phase_id,phase_name,oa_project_id, start_date,end_date,status, create_user,create_time,update_user, update_time,tenant_id </sql> </mapper> src/main/resources/mapper/oA/OaProjectPhaseTaskMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.oA.mapper.OaProjectPhaseTaskMapper"> <resultMap id="BaseResultMap" type="com.ruoyi.oA.pojo.OaProjectPhaseTask"> <id property="taskId" column="task_id" jdbcType="INTEGER"/> <result property="taskName" column="task_name" jdbcType="VARCHAR"/> <result property="phaseId" column="phase_id" jdbcType="INTEGER"/> <result property="startDate" column="start_date" jdbcType="TIMESTAMP"/> <result property="endDate" column="end_date" jdbcType="TIMESTAMP"/> <result property="targetDate" column="target_date" jdbcType="TIMESTAMP"/> <result property="targetValue" column="target_value" jdbcType="INTEGER"/> <result property="currentValue" column="current_value" jdbcType="INTEGER"/> <result property="unit" column="unit" jdbcType="VARCHAR"/> <result property="status" column="status" jdbcType="VARCHAR"/> <result property="completionRate" column="completion_rate" jdbcType="INTEGER"/> <result property="createUser" column="create_user" jdbcType="BIGINT"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <result property="updateUser" column="update_user" jdbcType="BIGINT"/> <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> <result property="tenantId" column="tenant_id" jdbcType="BIGINT"/> </resultMap> <sql id="Base_Column_List"> task_id,task_name,phase_id, start_date,end_date,target_date, target_value,current_value,unit, status,completion_rate,create_user, create_time,update_user,update_time, tenant_id </sql> </mapper> src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -98,6 +98,7 @@ t1.inbound_batches, t1.inbound_num, t1.inbound_num as inboundNum0, t1.inbound_num as totalInboundNum, t1.create_time, t1.update_time, t1.create_by