盈亏排序
This commit is contained in:
@@ -10,9 +10,7 @@ import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
|
||||
import com.ruoyi.oa.domain.dto.ProjectActivityDTO;
|
||||
import com.ruoyi.oa.domain.dto.ProjectDataDTO;
|
||||
import com.ruoyi.oa.domain.vo.DashboardChartsVo;
|
||||
import com.ruoyi.oa.domain.vo.DashboardMetricsVo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
|
||||
import com.ruoyi.oa.domain.vo.*;
|
||||
import com.ruoyi.oa.mapper.SysOaTaskMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -30,7 +28,6 @@ import com.ruoyi.common.core.validate.AddGroup;
|
||||
import com.ruoyi.common.core.validate.EditGroup;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
|
||||
import com.ruoyi.oa.domain.bo.SysOaProjectBo;
|
||||
import com.ruoyi.oa.service.ISysOaProjectService;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
@@ -230,5 +227,20 @@ public class SysOaProjectController extends BaseController {
|
||||
String month = date.format(DateTimeFormatter.ofPattern("yyyy-MM"));
|
||||
return R.ok(iSysOaProjectService.getProjectData(month));
|
||||
}
|
||||
/**
|
||||
* 项目盈亏数据
|
||||
*/
|
||||
@GetMapping("/projectProfit")
|
||||
public TableDataInfo<ProjectProfitLossVO> projectProfit(
|
||||
@RequestParam(required = false, defaultValue = "profit_loss") String sortField,
|
||||
@RequestParam(required = false, defaultValue = "desc") String sortOrder,
|
||||
PageQuery pageQuery
|
||||
) {
|
||||
// 这里PageQuery会自动带上orderByColumn和isAsc
|
||||
pageQuery.setOrderByColumn(sortField);
|
||||
pageQuery.setIsAsc(sortOrder);
|
||||
return iSysOaProjectService.getProjectProfitLossList(sortField, sortOrder, pageQuery);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.ruoyi.oa.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class ProjectProfitLossVO {
|
||||
private Long projectId;
|
||||
private String projectName;
|
||||
private String projectNum;
|
||||
private Date beginTime;
|
||||
private String projectStatus;
|
||||
private BigDecimal contractAmount;
|
||||
private BigDecimal warehouseCost;
|
||||
private BigDecimal hrCost;
|
||||
private BigDecimal profitLoss;
|
||||
// ...其他字段
|
||||
// getter/setter
|
||||
}
|
||||
@@ -25,6 +25,7 @@ import java.util.Map;
|
||||
* @date 2024-01-11
|
||||
*/
|
||||
public interface SysOaProjectMapper extends BaseMapperPlus<SysOaProjectMapper, SysOaProject, SysOaProjectVo> {
|
||||
Page<ProjectProfitLossVO> selectProfitLossPage(@Param("page") Page<ProjectProfitLossVO> page, @Param("ew") Wrapper<SysOaProject> wrapper);
|
||||
|
||||
Page<SysOaOutWarehouseListVo> selectPageOutList(@Param("page") Page<SysOaOutWarehouseListVo> page,@Param(Constants.WRAPPER) Wrapper<SysOaProject> queryWrapper);
|
||||
|
||||
|
||||
@@ -3,10 +3,7 @@ package com.ruoyi.oa.service;
|
||||
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
|
||||
import com.ruoyi.oa.domain.dto.ProjectActivityDTO;
|
||||
import com.ruoyi.oa.domain.dto.ProjectDataDTO;
|
||||
import com.ruoyi.oa.domain.vo.DashboardChartsVo;
|
||||
import com.ruoyi.oa.domain.vo.DashboardMetricsVo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
|
||||
import com.ruoyi.oa.domain.vo.*;
|
||||
import com.ruoyi.oa.domain.bo.SysOaProjectBo;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
@@ -22,7 +19,10 @@ import java.util.List;
|
||||
* @date 2024-01-11
|
||||
*/
|
||||
public interface ISysOaProjectService {
|
||||
|
||||
/**
|
||||
* 项目盈亏排序
|
||||
*/
|
||||
TableDataInfo<ProjectProfitLossVO> getProjectProfitLossList(String sortField, String sortOrder, PageQuery pageQuery);
|
||||
/**
|
||||
* 查询项目管理
|
||||
*/
|
||||
|
||||
@@ -49,6 +49,22 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
||||
)));
|
||||
|
||||
|
||||
@Override
|
||||
public TableDataInfo<ProjectProfitLossVO> getProjectProfitLossList(String sortField, String sortOrder, PageQuery pageQuery) {
|
||||
// 1. 构建分页对象
|
||||
Page<ProjectProfitLossVO> page = pageQuery.build();
|
||||
|
||||
// 2. 构建查询条件(可根据bo添加筛选)
|
||||
QueryWrapper<SysOaProject> wrapper = new QueryWrapper<>();
|
||||
|
||||
|
||||
// 3. 调用自定义Mapper方法
|
||||
Page<ProjectProfitLossVO> result = baseMapper.selectProfitLossPage(page, wrapper);
|
||||
|
||||
// 4. 返回分页数据
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询项目管理
|
||||
*/
|
||||
|
||||
@@ -813,5 +813,41 @@
|
||||
ORDER BY
|
||||
TIMESTAMPDIFF(DAY, NOW(), p.finish_time) ASC
|
||||
</select>
|
||||
<select id="selectProfitLossPage" resultType="com.ruoyi.oa.domain.vo.ProjectProfitLossVO">
|
||||
SELECT
|
||||
p.project_id,
|
||||
p.project_name,
|
||||
p.project_num,
|
||||
p.begin_time,
|
||||
p.project_status,
|
||||
p.funds AS contract_amount,
|
||||
COALESCE(wd.total_warehouse_cost, 0) AS warehouse_cost,
|
||||
COALESCE(hr.total_hr_cost, 0) AS hr_cost,
|
||||
(p.funds - COALESCE(wd.total_warehouse_cost, 0) - COALESCE(hr.total_hr_cost, 0)) AS profit_loss
|
||||
FROM sys_oa_project p
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
project_id,
|
||||
SUM(amount * sign_price) AS total_warehouse_cost
|
||||
FROM sys_oa_warehouse_detail
|
||||
WHERE del_flag = 0
|
||||
GROUP BY project_id
|
||||
) wd ON p.project_id = wd.project_id
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
a.project_id,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN a.hour > 0 THEN a.hour * u.labor_cost
|
||||
ELSE a.day_length * 8 * u.labor_cost
|
||||
END
|
||||
) AS total_hr_cost
|
||||
FROM sys_oa_attendance a
|
||||
JOIN sys_user u ON a.user_id = u.user_id
|
||||
WHERE a.del_flag = 0
|
||||
GROUP BY a.project_id
|
||||
) hr ON p.project_id = hr.project_id
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user