盈亏排序
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.bo.SysOaWarehouseDetailBo;
|
||||||
import com.ruoyi.oa.domain.dto.ProjectActivityDTO;
|
import com.ruoyi.oa.domain.dto.ProjectActivityDTO;
|
||||||
import com.ruoyi.oa.domain.dto.ProjectDataDTO;
|
import com.ruoyi.oa.domain.dto.ProjectDataDTO;
|
||||||
import com.ruoyi.oa.domain.vo.DashboardChartsVo;
|
import com.ruoyi.oa.domain.vo.*;
|
||||||
import com.ruoyi.oa.domain.vo.DashboardMetricsVo;
|
|
||||||
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
|
|
||||||
import com.ruoyi.oa.mapper.SysOaTaskMapper;
|
import com.ruoyi.oa.mapper.SysOaTaskMapper;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
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.core.validate.EditGroup;
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
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.domain.bo.SysOaProjectBo;
|
||||||
import com.ruoyi.oa.service.ISysOaProjectService;
|
import com.ruoyi.oa.service.ISysOaProjectService;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
@@ -230,5 +227,20 @@ public class SysOaProjectController extends BaseController {
|
|||||||
String month = date.format(DateTimeFormatter.ofPattern("yyyy-MM"));
|
String month = date.format(DateTimeFormatter.ofPattern("yyyy-MM"));
|
||||||
return R.ok(iSysOaProjectService.getProjectData(month));
|
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
|
* @date 2024-01-11
|
||||||
*/
|
*/
|
||||||
public interface SysOaProjectMapper extends BaseMapperPlus<SysOaProjectMapper, SysOaProject, SysOaProjectVo> {
|
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);
|
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.bo.SysOaWarehouseDetailBo;
|
||||||
import com.ruoyi.oa.domain.dto.ProjectActivityDTO;
|
import com.ruoyi.oa.domain.dto.ProjectActivityDTO;
|
||||||
import com.ruoyi.oa.domain.dto.ProjectDataDTO;
|
import com.ruoyi.oa.domain.dto.ProjectDataDTO;
|
||||||
import com.ruoyi.oa.domain.vo.DashboardChartsVo;
|
import com.ruoyi.oa.domain.vo.*;
|
||||||
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.bo.SysOaProjectBo;
|
import com.ruoyi.oa.domain.bo.SysOaProjectBo;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
@@ -22,7 +19,10 @@ import java.util.List;
|
|||||||
* @date 2024-01-11
|
* @date 2024-01-11
|
||||||
*/
|
*/
|
||||||
public interface ISysOaProjectService {
|
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
|
ORDER BY
|
||||||
TIMESTAMPDIFF(DAY, NOW(), p.finish_time) ASC
|
TIMESTAMPDIFF(DAY, NOW(), p.finish_time) ASC
|
||||||
</select>
|
</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>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user