Commit c0537059 by wangqi

首页统计

parent c4c6534a
...@@ -180,41 +180,51 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -180,41 +180,51 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectDeptList_ejdw" parameterType="SysDept" resultMap="SysDeptResult"> <select id="selectDeptList_ejdw" parameterType="SysDept" resultMap="SysDeptResult">
select * from sys_dept d select d.dept_id, d.parent_id,
d.ancestors,
CONCAT(p.dept_name,'/',d.dept_name) dept_name,
d.order_num, d.leader, d.phone,
d.email, d.status, d.del_flag, d.create_by, d.create_time,d.dwjb, d.dept_lx, d.dept_dfl, d.dept_ywfl from sys_dept d
LEFT JOIN sys_dept p on d.parent_id = p.dept_id
where d.del_flag = '0' where d.del_flag = '0'
and d.dept_id !='972' and d.dept_id !='972'
and dwjb = '3' and d.dwjb = '3'
<if test="deptId != null and deptId != 0"> <if test="deptId != null and deptId != 0">
AND dept_id = #{deptId} AND d.dept_id = #{deptId}
</if> </if>
<if test="parentId != null and parentId != 0"> <if test="parentId != null and parentId != 0">
AND parent_id = #{parentId} AND d.parent_id = #{parentId}
</if> </if>
<if test="deptName != null and deptName != ''"> <if test="deptName != null and deptName != ''">
AND dept_name like concat('%', #{deptName}, '%') AND d.dept_name like concat('%', #{deptName}, '%')
</if> </if>
<if test="status != null and status != ''"> <if test="status != null and status != ''">
AND status = #{status} AND d.status = #{status}
</if> </if>
order by d.parent_id, d.order_num order by d.parent_id, d.order_num
</select> </select>
<select id="selectDeptList_sjdw" parameterType="SysDept" resultMap="SysDeptResult"> <select id="selectDeptList_sjdw" parameterType="SysDept" resultMap="SysDeptResult">
select * from sys_dept d select d.dept_id, d.parent_id,
d.ancestors,
CONCAT(p.dept_name,'/',d.dept_name) dept_name,
d.order_num, d.leader, d.phone,
d.email, d.status, d.del_flag, d.create_by, d.create_time,d.dwjb, d.dept_lx, d.dept_dfl, d.dept_ywfl from sys_dept d
LEFT JOIN sys_dept p on d.parent_id = p.dept_id
where d.del_flag = '0' where d.del_flag = '0'
and d.parent_id !='972' and d.parent_id !='972'
and dwjb = '4' and d.dwjb = '4'
<if test="deptId != null and deptId != 0"> <if test="deptId != null and deptId != 0">
AND dept_id = #{deptId} AND d.dept_id = #{deptId}
</if> </if>
<if test="parentId != null and parentId != 0"> <if test="parentId != null and parentId != 0">
AND parent_id = #{parentId} AND d.parent_id = #{parentId}
</if> </if>
<if test="deptName != null and deptName != ''"> <if test="deptName != null and deptName != ''">
AND dept_name like concat('%', #{deptName}, '%') AND d.dept_name like concat('%', #{deptName}, '%')
</if> </if>
<if test="status != null and status != ''"> <if test="status != null and status != ''">
AND status = #{status} AND d.status = #{status}
</if> </if>
order by d.parent_id, d.order_num order by d.parent_id, d.order_num
</select> </select>
......
...@@ -14,6 +14,7 @@ import com.qianhe.domain.*; ...@@ -14,6 +14,7 @@ import com.qianhe.domain.*;
import com.qianhe.domain.Vo.SjLhscVo; import com.qianhe.domain.Vo.SjLhscVo;
import com.qianhe.service.*; import com.qianhe.service.*;
import com.qianhe.system.service.ISysDeptService; import com.qianhe.system.service.ISysDeptService;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -61,30 +62,74 @@ public class AmainController extends BaseController ...@@ -61,30 +62,74 @@ public class AmainController extends BaseController
return AjaxResult.success(sjBzxxService.selectBzxxTj(sjBzxx)); return AjaxResult.success(sjBzxxService.selectBzxxTj(sjBzxx));
} }
/**
* 例会 start------------------------------------------------------------------------------------------------------------------------------------
*/
@Data
class CommonLhData {
private List<SysDept> depts;
private List<SjLhsc> lhList;
private String title;
}
/** /**
* 查询例会查询情况, 看二级例会情况,看三级例会情况 * 查询例会查询情况, 看二级例会情况,看三级例会情况
*/ */
@GetMapping("/lhQk") @GetMapping("/lhQk")
public AjaxResult lhQk(Amain vo) public AjaxResult lhQk(Amain vo)
{ {
// 调用公共方法获取数据
CommonLhData commonData = getCommonData_Lh(vo);
// 处理当前接口的业务逻辑
Map<String, Map<String, Integer>> lhQkMap = amainServiceImpl.statisticsMeetings(commonData.getDepts(), commonData.getLhList());
Map map = new HashMap();
map.put("title", commonData.getTitle());
map.put("meetingStats", lhQkMap);
return AjaxResult.success(map);
}
/**
* 查询例会查询情况, 看二级例会情况,看三级例会情况
*/
@GetMapping("/lhXq")
public TableDataInfo lhXq(Amain vo)
{
// 调用公共方法获取数据
CommonLhData commonData = getCommonData_Lh(vo);
// 处理当前接口的业务逻辑
List<AmainXq> lhXqList = amainServiceImpl.getDeptQuarterlyStatus(commonData.getDepts(), commonData.getLhList());
return getDataTable(lhXqList);
}
/**
* 抽取公共逻辑:获取单位列表、例会列表和标题
*/
private CommonLhData getCommonData_Lh(Amain vo) {
String nd = vo.getNd(); String nd = vo.getNd();
String startJd=nd+"-01"; String startJd = nd + "-01";
String endJd=nd+"-12"; String endJd = nd + "-12";
// 获取角色和部门ID(公共参数)
List<SysRole> rolelist = SecurityUtils.getLoginUser().getUser().getRoles(); List<SysRole> rolelist = SecurityUtils.getLoginUser().getUser().getRoles();
// A看所有 B直属单位以下 C基层单位自己 D空白 String sylx = getHighestLevel(rolelist); // A/B/C/D角色判断
String sylx = getHighestLevel(rolelist);
Long deptId = SecurityUtils.getDeptId(); Long deptId = SecurityUtils.getDeptId();
List<SysDept> depts = null; // 单位信息 // 初始化返回数据
List<SjLhsc> lhList = null; // 例会信息 CommonLhData data = new CommonLhData();
String title = "单位例会提交情况"; List<SysDept> depts = null;
if("A".equals(sylx)){ List<SjLhsc> lhList = null;
String title = "单位例会提交情况"; // 默认标题
// 根据角色类型处理(公共逻辑)
if ("A".equals(sylx)) {
title = "直属单位例会提交情况"; title = "直属单位例会提交情况";
// 单位信息 // 单位信息
SysDept dept = new SysDept(); SysDept dept = new SysDept();
depts = deptService.selectDeptList_ejdw(dept); depts = deptService.selectDeptList_ejdw(dept);
// 例会信息 // 例会信息
SjLhsc sjLhsc = new SjLhsc(); SjLhsc sjLhsc = new SjLhsc();
sjLhsc.setStartJd(startJd); sjLhsc.setStartJd(startJd);
...@@ -92,42 +137,58 @@ public class AmainController extends BaseController ...@@ -92,42 +137,58 @@ public class AmainController extends BaseController
sjLhsc.setZt("已提交"); sjLhsc.setZt("已提交");
sjLhsc.setDwjb("3"); sjLhsc.setDwjb("3");
lhList = sjLhscService.selectSjLhscList_main(sjLhsc); lhList = sjLhscService.selectSjLhscList_main(sjLhsc);
}else if("B".equals(sylx)){
} else if ("B".equals(sylx)) {
title = "基层单位例会提交情况"; title = "基层单位例会提交情况";
// 单位信息 // 单位信息
SysDept dept = new SysDept(); SysDept dept = new SysDept();
dept.setParentId(deptId); dept.setParentId(deptId);
depts = deptService.selectDeptList_sjdw(dept); depts = deptService.selectDeptList_sjdw(dept);
// 例会信息 // 例会信息
SjLhsc sjLhsc = new SjLhsc(); SjLhsc sjLhsc = new SjLhsc();
sjLhsc.setStartJd(startJd); sjLhsc.setStartJd(startJd);
sjLhsc.setEndJd(endJd); sjLhsc.setEndJd(endJd);
sjLhsc.setZt("已提交"); sjLhsc.setZt("已提交");
sjLhsc.setDwjb("4"); sjLhsc.setDwjb("4");
sjLhsc.setParentId(deptId+""); sjLhsc.setParentId(deptId + "");
lhList = sjLhscService.selectSjLhscList_main(sjLhsc); lhList = sjLhscService.selectSjLhscList_main(sjLhsc);
}else if("C".equals(sylx)){
} else if ("C".equals(sylx)) {
title = "单位例会提交情况"; title = "单位例会提交情况";
// 单位信息
SysDept dept = new SysDept(); SysDept dept = new SysDept();
dept.setDeptId(deptId); dept.setDeptId(deptId);
depts = deptService.selectDeptList_sjdw(dept); depts = deptService.selectDeptList_sjdw(dept);
// 例会信息 // 例会信息
SjLhsc sjLhsc = new SjLhsc(); SjLhsc sjLhsc = new SjLhsc();
sjLhsc.setStartJd(startJd); sjLhsc.setStartJd(startJd);
sjLhsc.setEndJd(endJd); sjLhsc.setEndJd(endJd);
sjLhsc.setZt("已提交"); sjLhsc.setZt("已提交");
sjLhsc.setDwjb("4"); sjLhsc.setDwjb("4");
sjLhsc.setDeptId(deptId+""); sjLhsc.setDeptId(deptId + "");
lhList = sjLhscService.selectSjLhscList_main(sjLhsc); lhList = sjLhscService.selectSjLhscList_main(sjLhsc);
} }
Map<String, Map<String, Integer>> lhQkMap = amainServiceImpl.statisticsMeetings(depts, lhList);
Map map = new HashMap(); // 封装公共数据并返回
map.put("title", title); data.setDepts(depts);
map.put("meetingStats", lhQkMap); data.setLhList(lhList);
return AjaxResult.success(map); data.setTitle(title);
return data;
}
/**
* 例会 end------------------------------------------------------------------------------------------------------------------------------------
*/
/**
* 费用 start------------------------------------------------------------------------------------------------------------------------------------
*/
@Data
class CommonFyData {
private List<SysDept> depts; // 单位列表
private List<SjFybpZb> fyList; // 费用信息列表
private String title; // 标题
} }
...@@ -137,241 +198,377 @@ public class AmainController extends BaseController ...@@ -137,241 +198,377 @@ public class AmainController extends BaseController
@GetMapping("/fybbQk") @GetMapping("/fybbQk")
public AjaxResult fybbQk(Amain vo) public AjaxResult fybbQk(Amain vo)
{ {
String nd = vo.getNd(); CommonFyData commonData = getCommonData_fy(vo);
List<SysRole> rolelist = SecurityUtils.getLoginUser().getUser().getRoles(); Map<String, Map<String, Integer>> fyQkMap = amainServiceImpl.countDepartmentExpenses( commonData.getDepts(), commonData.getFyList());
// A看所有 B直属单位以下 C基层单位自己 D空白
String sylx = getHighestLevel(rolelist);
Long deptId = SecurityUtils.getDeptId();
List<SysDept> depts = null; // 单位信息
List<SjFybpZb> fyList = null; // 费用信息
String title = "费用报批提交情况";
if("A".equals(sylx)){
// 单位信息
SysDept dept = new SysDept();
depts = deptService.selectDeptList_ejdw(dept);
SjFybpZb sjFybpZb = new SjFybpZb();
sjFybpZb.setFyrq(nd);
sjFybpZb.setSpcx("1");
fyList = sjFybpZbService.selectSjFybpZbList_main(sjFybpZb);
}else if("B".equals(sylx)){
// 单位信息
SysDept dept = new SysDept();
dept.setParentId(deptId);
depts = deptService.selectDeptList_sjdw(dept);
SjFybpZb sjFybpZb = new SjFybpZb();
sjFybpZb.setFyrq(nd);
sjFybpZb.setSpcx("1");
sjFybpZb.setDeptId(deptId+"");
fyList = sjFybpZbService.selectSjFybpZbList_main(sjFybpZb);
}
Map<String, Map<String, Integer>> fyQkMap = amainServiceImpl.countDepartmentExpenses(depts, fyList);
Map map = new HashMap(); Map map = new HashMap();
map.put("title", title); map.put("title", commonData.getTitle());
map.put("expenseStats", fyQkMap); map.put("expenseStats", fyQkMap);
return AjaxResult.success(map); return AjaxResult.success(map);
} }
/** /**
* 查询直属单位对基层单位的分档评价情况 * 查询费用提交情况
*/ */
@GetMapping("/zsdwDdpjQk") @GetMapping("/fybbXq")
public AjaxResult zsdwDdpjQk(Amain vo) public TableDataInfo fybbXq(Amain vo)
{ {
String nd = vo.getNd(); CommonFyData commonData = getCommonData_fy(vo);
List<SysRole> rolelist = SecurityUtils.getLoginUser().getUser().getRoles(); List<AmainXq> fyXqList = amainServiceImpl.getExpenseStatus(commonData.getDepts(), commonData.getFyList());
// A看所有 B直属单位以下 C基层单位自己 D空白 return getDataTable(fyXqList);
String sylx = getHighestLevel(rolelist); }
Long deptId = SecurityUtils.getDeptId();
List<SysDept> depts = null; // 单位信息 /**
List<SjGfjsZsdwkhpjZb> fdpjList = null; // 分档评价信息 * 抽取公共逻辑:根据角色和年份获取单位列表、费用列表和标题
String title = "直属单位对基层单位的分档评价统计"; * 专注处理两段代码中完全重复的部分,不干涉各自接口的特有参数
if("A".equals(sylx)){ */
// 单位信息 private CommonFyData getCommonData_fy(Amain vo) {
SysDept dept = new SysDept(); // 1. 获取公共参数
depts = deptService.selectDeptList_sjdw(dept); String nd = vo.getNd(); // 年份(从vo中获取,公共参数)
List<SysRole> rolelist = SecurityUtils.getLoginUser().getUser().getRoles();
String sylx = getHighestLevel(rolelist); // 角色级别(A/B/C/D)
Long deptId = SecurityUtils.getDeptId(); // 当前部门ID
// 2. 初始化公共数据
CommonFyData data = new CommonFyData();
List<SysDept> depts = null;
List<SjFybpZb> fyList = null;
String title = "费用报批提交情况"; // 默认标题
// 3. 根据角色类型查询对应的单位和费用列表(完全重复的逻辑)
if ("A".equals(sylx)) {
// A角色:查询二级单位及对应费用
SysDept deptQuery = new SysDept();
depts = deptService.selectDeptList_ejdw(deptQuery);
SjFybpZb fyQuery = new SjFybpZb();
fyQuery.setFyrq(nd); // 按年份筛选
fyQuery.setSpcx("1"); // 固定参数
fyList = sjFybpZbService.selectSjFybpZbList_main(fyQuery);
} else if ("B".equals(sylx)) {
// B角色:查询下属基层单位及对应费用
SysDept deptQuery = new SysDept();
deptQuery.setParentId(deptId); // 按当前部门ID筛选子单位
depts = deptService.selectDeptList_sjdw(deptQuery);
SjFybpZb fyQuery = new SjFybpZb();
fyQuery.setFyrq(nd); // 按年份筛选
fyQuery.setSpcx("1"); // 固定参数
fyQuery.setDeptId(deptId + ""); // 按当前部门ID筛选费用
fyList = sjFybpZbService.selectSjFybpZbList_main(fyQuery);
}
SjGfjsZsdwkhpjZb sjGfjsZsdwkhpjZb = new SjGfjsZsdwkhpjZb(); // 4. 封装并返回公共数据
sjGfjsZsdwkhpjZb.setNd(nd); data.setDepts(depts);
sjGfjsZsdwkhpjZb.setZt("1"); data.setFyList(fyList);
sjGfjsZsdwkhpjZb.setJb("直属单位"); data.setTitle(title);
fdpjList = sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZbList_main(sjGfjsZsdwkhpjZb); return data;
}
}else if("B".equals(sylx)){ /**
// 单位信息 * 费用 end------------------------------------------------------------------------------------------------------------------------------------
SysDept dept = new SysDept(); */
dept.setParentId(deptId);
depts = deptService.selectDeptList_sjdw(dept);
SjGfjsZsdwkhpjZb sjGfjsZsdwkhpjZb = new SjGfjsZsdwkhpjZb(); /**
sjGfjsZsdwkhpjZb.setNd(nd); * 直属单位对基层单位的分档评价 start------------------------------------------------------------------------------------------------------------------------------------
sjGfjsZsdwkhpjZb.setZt("1"); */
sjGfjsZsdwkhpjZb.setJb("直属单位");
sjGfjsZsdwkhpjZb.setDeptId(deptId);
fdpjList = sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZbList_main(sjGfjsZsdwkhpjZb);
@Data
class CommonFdpjData {
private List<SysDept> depts; // 单位列表
private List<SjGfjsZsdwkhpjZb> fdpjList; // 分档评价信息列表
private String title; // 标题
}
} /**
Map<String, Map<String, Integer>> fyQkMap = amainServiceImpl.statisticsGradingEvaluation(depts, fdpjList); * 查询直属单位对基层单位的分档评价情况
*/
@GetMapping("/zsdwDdpjQk")
public AjaxResult zsdwDdpjQk(Amain vo)
{
CommonFdpjData commonData = getCommonData_Fdpj(vo);
Map<String, Map<String, Integer>> fdpjQkMap = amainServiceImpl.statisticsGradingEvaluation( commonData.getDepts(), commonData.getFdpjList());
Map map = new HashMap(); Map map = new HashMap();
map.put("title", title); map.put("title", commonData.getTitle());
map.put("expenseStats", fyQkMap); map.put("expenseStats", fdpjQkMap);
return AjaxResult.success(map); return AjaxResult.success(map);
} }
/** /**
* 查询基层单位月度问题清单提交情况 * 查询直属单位对基层单位的分档评价情况
*/ */
@GetMapping("/jcdwYdwtQk") @GetMapping("/zsdwDdpjXq")
public AjaxResult jcdwYdwtQk(Amain vo) public TableDataInfo zsdwDdpjXq(Amain vo)
{ {
String nd = vo.getNd(); CommonFdpjData commonData = getCommonData_Fdpj(vo);
String startJd=nd+"-01"; List<AmainXq> fdpjXqList = amainServiceImpl.getEvaluationStatus( commonData.getDepts(), commonData.getFdpjList());
String endJd=nd+"-12"; return getDataTable(fdpjXqList);
List<SysRole> rolelist = SecurityUtils.getLoginUser().getUser().getRoles(); }
// A看所有 B直属单位以下 C基层单位自己 D空白
String sylx = getHighestLevel(rolelist);
Long deptId = SecurityUtils.getDeptId();
List<SysDept> depts = null; // 单位信息
List<SjGfjsYdjcjl> ydwtList = null; // 月度问题
String title = "基层单位月度问题清单提交情况";
if("A".equals(sylx)){
// 单位信息
SysDept dept = new SysDept();
depts = deptService.selectDeptList_sjdw(dept);
/**
* 抽取公共逻辑:根据角色和年份获取单位列表、分档评价列表和标题
* 专注处理两段代码中完全重复的部分
*/
private CommonFdpjData getCommonData_Fdpj(Amain vo) {
// 1. 获取公共参数
String nd = vo.getNd(); // 年份(公共参数)
List<SysRole> rolelist = SecurityUtils.getLoginUser().getUser().getRoles();
String sylx = getHighestLevel(rolelist); // 角色级别(A/B/C/D)
Long deptId = SecurityUtils.getDeptId(); // 当前部门ID
// 2. 初始化公共数据
CommonFdpjData data = new CommonFdpjData();
List<SysDept> depts = null;
List<SjGfjsZsdwkhpjZb> fdpjList = null;
String title = "直属单位对基层单位的分档评价统计"; // 默认标题
// 3. 根据角色类型查询对应的单位和分档评价列表(完全重复的逻辑)
if ("A".equals(sylx)) {
// A角色:查询所有基层单位及分档评价
SysDept deptQuery = new SysDept();
depts = deptService.selectDeptList_sjdw(deptQuery);
SjGfjsZsdwkhpjZb fdpjQuery = new SjGfjsZsdwkhpjZb();
fdpjQuery.setNd(nd); // 按年份筛选
fdpjQuery.setZt("1"); // 固定参数(状态)
fdpjQuery.setJb("直属单位"); // 固定参数(级别)
fdpjList = sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZbList_main(fdpjQuery);
} else if ("B".equals(sylx)) {
// B角色:查询当前部门下属的基层单位及分档评价
SysDept deptQuery = new SysDept();
deptQuery.setParentId(deptId); // 按当前部门ID筛选子单位
depts = deptService.selectDeptList_sjdw(deptQuery);
SjGfjsZsdwkhpjZb fdpjQuery = new SjGfjsZsdwkhpjZb();
fdpjQuery.setNd(nd); // 按年份筛选
fdpjQuery.setZt("1"); // 固定参数(状态)
fdpjQuery.setJb("直属单位"); // 固定参数(级别)
fdpjQuery.setDeptId(deptId); // 按当前部门ID筛选评价
fdpjList = sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZbList_main(fdpjQuery);
}
SjGfjsYdjcjl sjGfjsYdjcjl = new SjGfjsYdjcjl(); // 4. 封装并返回公共数据
sjGfjsYdjcjl.setJcjb("基层单位自查"); data.setDepts(depts);
sjGfjsYdjcjl.setStartRq(startJd); data.setFdpjList(fdpjList);
sjGfjsYdjcjl.setEndRq(endJd); data.setTitle(title);
sjGfjsYdjcjl.setZt("1"); return data;
ydwtList = sjGfjsYdjcjlService.selectSjGfjsYdjcjlList_main(sjGfjsYdjcjl); }
/**
* 直属单位对基层单位的分档评价 end------------------------------------------------------------------------------------------------------------------------------------
*/
}else if("B".equals(sylx)){
// 单位信息
SysDept dept = new SysDept();
dept.setParentId(deptId);
depts = deptService.selectDeptList_sjdw(dept);
SjGfjsYdjcjl sjGfjsYdjcjl = new SjGfjsYdjcjl(); /**
sjGfjsYdjcjl.setDeptId(deptId); * 查询基层单位月度问题清单 start------------------------------------------------------------------------------------------------------------------------------------
sjGfjsYdjcjl.setJcjb("基层单位自查"); */
sjGfjsYdjcjl.setStartRq(startJd);
sjGfjsYdjcjl.setEndRq(endJd);
sjGfjsYdjcjl.setZt("1");
ydwtList = sjGfjsYdjcjlService.selectSjGfjsYdjcjlList_main(sjGfjsYdjcjl);
@Data
class CommonYdwtData {
private List<SysDept> depts; // 单位列表
private List<SjGfjsYdjcjl> ydwtList; // 月度问题列表
private String title; // 标题
}
/**
* 查询基层单位月度问题清单提交情况
*/
@GetMapping("/jcdwYdwtQk")
public AjaxResult jcdwYdwtQk(Amain vo)
{
CommonYdwtData commonData = getCommonData_Ydwt(vo);
Map<String, Map<String, Integer>> ydwtXkMap = amainServiceImpl.statisticsMonthlyIssues( commonData.getDepts(), commonData.getYdwtList());
Map map = new HashMap();
map.put("title", commonData.getTitle());
map.put("expenseStats", ydwtXkMap);
return AjaxResult.success(map);
}
}else if("C".equals(sylx)){
// 单位信息
SysDept dept = new SysDept();
dept.setDeptId(deptId);
depts = deptService.selectDeptList_sjdw(dept);
/**
* 查询基层单位月度问题清单提交情况
*/
@GetMapping("/jcdwYdwtXq")
public TableDataInfo jcdwYdwtXq(Amain vo)
{
CommonYdwtData commonData = getCommonData_Ydwt(vo);
List<AmainXq> ydwtXqList = amainServiceImpl.getMonthlyIssueStatus( commonData.getDepts(), commonData.getYdwtList());
return getDataTable(ydwtXqList);
}
SjGfjsYdjcjl sjGfjsYdjcjl = new SjGfjsYdjcjl();
sjGfjsYdjcjl.setDeptId(deptId);
sjGfjsYdjcjl.setJcjb("基层单位自查");
sjGfjsYdjcjl.setStartRq(startJd);
sjGfjsYdjcjl.setEndRq(endJd);
sjGfjsYdjcjl.setZt("1");
ydwtList = sjGfjsYdjcjlService.selectSjGfjsYdjcjlList_main(sjGfjsYdjcjl);
private CommonYdwtData getCommonData_Ydwt(Amain vo) {
// 1. 获取公共参数并处理
String nd = vo.getNd();
String startJd = nd + "-01";
String endJd = nd + "-12";
List<SysRole> rolelist = SecurityUtils.getLoginUser().getUser().getRoles();
String sylx = getHighestLevel(rolelist); // 角色级别(A/B/C/D)
Long deptId = SecurityUtils.getDeptId(); // 当前部门ID
// 2. 初始化公共数据
CommonYdwtData data = new CommonYdwtData();
List<SysDept> depts = null;
List<SjGfjsYdjcjl> ydwtList = null;
String title = "基层单位月度问题清单提交情况"; // 默认标题
// 3. 根据角色类型查询对应的单位和月度问题列表(完全重复的逻辑)
if ("A".equals(sylx)) {
// A角色:查询所有基层单位及月度问题
SysDept deptQuery = new SysDept();
depts = deptService.selectDeptList_sjdw(deptQuery);
SjGfjsYdjcjl ydwtQuery = new SjGfjsYdjcjl();
ydwtQuery.setJcjb("基层单位自查"); // 固定参数
ydwtQuery.setStartRq(startJd); // 时间范围起始
ydwtQuery.setEndRq(endJd); // 时间范围结束
ydwtQuery.setZt("1"); // 固定状态参数
ydwtList = sjGfjsYdjcjlService.selectSjGfjsYdjcjlList_main(ydwtQuery);
} else if ("B".equals(sylx)) {
// B角色:查询当前部门下属的基层单位及月度问题
SysDept deptQuery = new SysDept();
deptQuery.setParentId(deptId); // 按父部门ID筛选
depts = deptService.selectDeptList_sjdw(deptQuery);
SjGfjsYdjcjl ydwtQuery = new SjGfjsYdjcjl();
ydwtQuery.setDeptId(deptId); // 按部门ID筛选
ydwtQuery.setJcjb("基层单位自查"); // 固定参数
ydwtQuery.setStartRq(startJd); // 时间范围起始
ydwtQuery.setEndRq(endJd); // 时间范围结束
ydwtQuery.setZt("1"); // 固定状态参数
ydwtList = sjGfjsYdjcjlService.selectSjGfjsYdjcjlList_main(ydwtQuery);
} else if ("C".equals(sylx)) {
// C角色:查询本单位的月度问题
SysDept deptQuery = new SysDept();
deptQuery.setDeptId(deptId); // 按本部门ID筛选
depts = deptService.selectDeptList_sjdw(deptQuery);
SjGfjsYdjcjl ydwtQuery = new SjGfjsYdjcjl();
ydwtQuery.setDeptId(deptId); // 按部门ID筛选
ydwtQuery.setJcjb("基层单位自查"); // 固定参数
ydwtQuery.setStartRq(startJd); // 时间范围起始
ydwtQuery.setEndRq(endJd); // 时间范围结束
ydwtQuery.setZt("1"); // 固定状态参数
ydwtList = sjGfjsYdjcjlService.selectSjGfjsYdjcjlList_main(ydwtQuery);
} }
Map<String, Map<String, Integer>> fyQkMap = amainServiceImpl.statisticsMonthlyIssues(depts, ydwtList); // 4. 封装并返回公共数据
Map map = new HashMap(); data.setDepts(depts);
map.put("title", title); data.setYdwtList(ydwtList);
map.put("expenseStats", fyQkMap); data.setTitle(title);
return AjaxResult.success(map); return data;
} }
/**
* 查询基层单位月度问题清单 end------------------------------------------------------------------------------------------------------------------------------------
*/
/**
* 基层单位季度自测提 start------------------------------------------------------------------------------------------------------------------------------------
*/
@Data
class CommonJczcData {
private List<SysDept> depts; // 单位列表
private List<SjGfjsZsdwkhpjZb> fdpjList; // 季度自测列表
private String title; // 标题
}
/** /**
* 查询基层单位季度自测提交情况 * 查询基层单位季度自测提交情况
*/ */
@GetMapping("/jcdwJdzcQk") @GetMapping("/jcdwJdzcQk")
public AjaxResult jcdwJdzcQk(Amain vo) public AjaxResult jcdwJdzcQk(Amain vo)
{ {
String nd = vo.getNd(); CommonJczcData commonData = getCommonData_Jczc(vo);
Map<String, Map<String, Integer>> jczcQkMap = amainServiceImpl.statisticsQuarterlyTests( commonData.getDepts(), commonData.getFdpjList());
List<SysRole> rolelist = SecurityUtils.getLoginUser().getUser().getRoles(); Map map = new HashMap();
// A看所有 B直属单位以下 C基层单位自己 D空白 map.put("title", commonData.getTitle());
String sylx = getHighestLevel(rolelist); map.put("expenseStats", jczcQkMap);
Long deptId = SecurityUtils.getDeptId(); return AjaxResult.success(map);
}
List<SysDept> depts = null; // 单位信息
List<SjGfjsZsdwkhpjZb> fdpjList = null; // 季度自测
String title = "基层单位季度自测提交情况";
if("A".equals(sylx)){
// 单位信息
SysDept dept = new SysDept();
depts = deptService.selectDeptList_sjdw(dept);
SjGfjsZsdwkhpjZb sjGfjsZsdwkhpjZb = new SjGfjsZsdwkhpjZb();
sjGfjsZsdwkhpjZb.setNd(nd);
sjGfjsZsdwkhpjZb.setZt("1");
sjGfjsZsdwkhpjZb.setJb("基层单位");
fdpjList = sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZbList_main(sjGfjsZsdwkhpjZb);
}else if("B".equals(sylx)){
// 单位信息
SysDept dept = new SysDept();
dept.setParentId(deptId);
depts = deptService.selectDeptList_sjdw(dept);
SjGfjsZsdwkhpjZb sjGfjsZsdwkhpjZb = new SjGfjsZsdwkhpjZb();
sjGfjsZsdwkhpjZb.setNd(nd);
sjGfjsZsdwkhpjZb.setZt("1");
sjGfjsZsdwkhpjZb.setJb("基层单位");
sjGfjsZsdwkhpjZb.setDeptId(deptId);
fdpjList = sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZbList_main(sjGfjsZsdwkhpjZb);
}else if("C".equals(sylx)){
// 单位信息
SysDept dept = new SysDept();
dept.setDeptId(deptId);
depts = deptService.selectDeptList_sjdw(dept);
SjGfjsZsdwkhpjZb sjGfjsZsdwkhpjZb = new SjGfjsZsdwkhpjZb(); /**
sjGfjsZsdwkhpjZb.setNd(nd); * 查询基层单位季度自测提交情况
sjGfjsZsdwkhpjZb.setZt("1"); */
sjGfjsZsdwkhpjZb.setJb("基层单位"); @GetMapping("/jcdwJdzcXq")
sjGfjsZsdwkhpjZb.setDeptId(deptId); public TableDataInfo jcdwJdzcXq(Amain vo)
fdpjList = sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZbList_main(sjGfjsZsdwkhpjZb); {
CommonJczcData commonData = getCommonData_Jczc(vo);
List<AmainXq> jczcXqList = amainServiceImpl.getQuarterlyTestStatus( commonData.getDepts(), commonData.getFdpjList());
return getDataTable(jczcXqList);
}
private CommonJczcData getCommonData_Jczc(Amain vo) {
// 1. 获取公共参数
String nd = vo.getNd();
List<SysRole> rolelist = SecurityUtils.getLoginUser().getUser().getRoles();
String sylx = getHighestLevel(rolelist); // 角色级别(A/B/C/D)
Long deptId = SecurityUtils.getDeptId(); // 当前部门ID
// 2. 初始化公共数据
CommonJczcData data = new CommonJczcData();
List<SysDept> depts = null;
List<SjGfjsZsdwkhpjZb> fdpjList = null;
String title = "基层单位季度自测提交情况"; // 默认标题
// 3. 根据角色类型查询对应的单位和季度自测列表(完全重复的逻辑)
if ("A".equals(sylx)) {
// A角色:查询所有基层单位及季度自测数据
SysDept deptQuery = new SysDept();
depts = deptService.selectDeptList_sjdw(deptQuery);
SjGfjsZsdwkhpjZb fdpjQuery = new SjGfjsZsdwkhpjZb();
fdpjQuery.setNd(nd); // 按年份筛选
fdpjQuery.setZt("1"); // 固定状态参数
fdpjQuery.setJb("基层单位"); // 固定级别参数
fdpjList = sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZbList_main(fdpjQuery);
} else if ("B".equals(sylx)) {
// B角色:查询当前部门下属的基层单位及季度自测数据
SysDept deptQuery = new SysDept();
deptQuery.setParentId(deptId); // 按父部门ID筛选
depts = deptService.selectDeptList_sjdw(deptQuery);
SjGfjsZsdwkhpjZb fdpjQuery = new SjGfjsZsdwkhpjZb();
fdpjQuery.setNd(nd); // 按年份筛选
fdpjQuery.setZt("1"); // 固定状态参数
fdpjQuery.setJb("基层单位"); // 固定级别参数
fdpjQuery.setDeptId(deptId); // 按部门ID筛选
fdpjList = sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZbList_main(fdpjQuery);
} else if ("C".equals(sylx)) {
// C角色:查询本单位的季度自测数据
SysDept deptQuery = new SysDept();
deptQuery.setDeptId(deptId); // 按本部门ID筛选
depts = deptService.selectDeptList_sjdw(deptQuery);
SjGfjsZsdwkhpjZb fdpjQuery = new SjGfjsZsdwkhpjZb();
fdpjQuery.setNd(nd); // 按年份筛选
fdpjQuery.setZt("1"); // 固定状态参数
fdpjQuery.setJb("基层单位"); // 固定级别参数
fdpjQuery.setDeptId(deptId); // 按部门ID筛选
fdpjList = sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZbList_main(fdpjQuery);
} }
Map<String, Map<String, Integer>> fyQkMap = amainServiceImpl.statisticsQuarterlyTests(depts, fdpjList); // 4. 封装并返回公共数据
Map map = new HashMap(); data.setDepts(depts);
map.put("title", title); data.setFdpjList(fdpjList);
map.put("expenseStats", fyQkMap); data.setTitle(title);
return AjaxResult.success(map); return data;
} }
/**
* 基层单位季度自测提 end------------------------------------------------------------------------------------------------------------------------------------
*/
......
...@@ -18,4 +18,5 @@ public class Amain extends BaseEntity ...@@ -18,4 +18,5 @@ public class Amain extends BaseEntity
private String nd; private String nd;
} }
package com.qianhe.domain;
import com.qianhe.common.core.domain.BaseEntity;
import lombok.Data;
/**
* 公共附件对象 gg_fjb
*
* @author qianhe
* @date 2025-08-04
*/
@Data
public class AmainXq extends BaseEntity
{
private static final long serialVersionUID = 1L;
private Long deptId;
/** 部门名称 */
private String deptName;
private String Q1;
private String Q2;
private String Q3;
private String Q4;
private String Y01;
private String Y02;
private String Y03;
private String Y04;
private String Y05;
private String Y06;
private String Y07;
private String Y08;
private String Y09;
private String Y10;
private String Y11;
private String Y12;
public AmainXq(Long deptId,String deptName) {
this.deptId = deptId;
this.deptName = deptName;
this.Q1 = "未提交";
this.Q2 = "未提交";
this.Q3 = "未提交";
this.Q4 = "未提交";
this.Y01 = "未提交";
this.Y02 = "未提交";
this.Y03 = "未提交";
this.Y04 = "未提交";
this.Y05 = "未提交";
this.Y06 = "未提交";
this.Y07 = "未提交";
this.Y08 = "未提交";
this.Y09 = "未提交";
this.Y10 = "未提交";
this.Y11 = "未提交";
this.Y12 = "未提交";
}
}
...@@ -16,14 +16,36 @@ import java.util.stream.Collectors; ...@@ -16,14 +16,36 @@ import java.util.stream.Collectors;
public interface IAmainService public interface IAmainService
{ {
/**
* 查询例会查询情况, 看二级例会情况,看三级例会情况
*/
public Map<String, Map<String, Integer>> statisticsMeetings(List<SysDept> depts, List<SjLhsc> lhList); public Map<String, Map<String, Integer>> statisticsMeetings(List<SysDept> depts, List<SjLhsc> lhList);
public List<AmainXq> getDeptQuarterlyStatus(List<SysDept> depts, List<SjLhsc> lhList);
/**
* 查询费用提交情况
*/
public Map countDepartmentExpenses(List<SysDept> depts, List<SjFybpZb> fyList); public Map countDepartmentExpenses(List<SysDept> depts, List<SjFybpZb> fyList);
public List<AmainXq> getExpenseStatus(List<SysDept> depts, List<SjFybpZb> fyList);
/**
* 查询直属单位对基层单位的分档评价情况
*/
public Map<String, Map<String, Integer>> statisticsGradingEvaluation(List<SysDept> depts, List<SjGfjsZsdwkhpjZb> fdpjList); public Map<String, Map<String, Integer>> statisticsGradingEvaluation(List<SysDept> depts, List<SjGfjsZsdwkhpjZb> fdpjList);
public List<AmainXq> getEvaluationStatus(List<SysDept> depts, List<SjGfjsZsdwkhpjZb> fdpjList);
/**
* 查询基层单位月度问题清单提交情况
*/
public Map<String, Map<String, Integer>> statisticsMonthlyIssues(List<SysDept> depts, List<SjGfjsYdjcjl> ydwtList); public Map<String, Map<String, Integer>> statisticsMonthlyIssues(List<SysDept> depts, List<SjGfjsYdjcjl> ydwtList);
public List<AmainXq> getMonthlyIssueStatus(List<SysDept> depts, List<SjGfjsYdjcjl> ydwtList) ;
/**
* 查询基层单位季度自测提交情况
*/
public Map<String, Map<String, Integer>> statisticsQuarterlyTests(List<SysDept> depts, List<SjGfjsZsdwkhpjZb> fdpjList); public Map<String, Map<String, Integer>> statisticsQuarterlyTests(List<SysDept> depts, List<SjGfjsZsdwkhpjZb> fdpjList);
public List<AmainXq> getQuarterlyTestStatus(List<SysDept> depts, List<SjGfjsZsdwkhpjZb> fdpjList);
} }
...@@ -29,6 +29,10 @@ import java.util.stream.Collectors; ...@@ -29,6 +29,10 @@ import java.util.stream.Collectors;
@Service @Service
public class AmainServiceImpl implements IAmainService public class AmainServiceImpl implements IAmainService
{ {
/**
* 查询例会查询情况
*/
public Map<String, Map<String, Integer>> statisticsMeetings( public Map<String, Map<String, Integer>> statisticsMeetings(
List<SysDept> depts, List<SjLhsc> lhList) { List<SysDept> depts, List<SjLhsc> lhList) {
...@@ -93,11 +97,89 @@ public class AmainServiceImpl implements IAmainService ...@@ -93,11 +97,89 @@ public class AmainServiceImpl implements IAmainService
} }
/** /**
* 根据月份获取季度 * 统计各单位2025年各季度例会提交情况
* @param depts 单位信息列表(可能为null)
* @param lhList 2025年例会信息列表(可能为null)
* @return 各单位季度提交状态列表
*/ */
public List<AmainXq> getDeptQuarterlyStatus(
List<SysDept> depts, List<SjLhsc> lhList) {
// 处理null情况,转为空列表
List<SysDept> safeDepts = (depts == null) ? Collections.emptyList() : depts;
List<SjLhsc> safeLhList = (lhList == null) ? Collections.emptyList() : lhList;
// 初始化所有单位的季度状态(默认未提交)
Map<Long, AmainXq> deptStatusMap = safeDepts.stream()
.map(dept -> new AmainXq(dept.getDeptId(),dept.getDeptName()))
.collect(Collectors.toMap(AmainXq::getDeptId, status -> status));
// 处理例会数据,标记已提交的季度
Calendar calendar = Calendar.getInstance();
for (SjLhsc meeting : safeLhList) {
// 跳过null记录
if (meeting == null) continue;
// 获取会议日期和单位ID
Date meetingDate = meeting.getHyrq();
String deptIdStr = meeting.getDeptId();
if (meetingDate == null || deptIdStr == null) continue;
// 解析单位ID(字符串转Long)
Long deptId;
try {
deptId = Long.parseLong(deptIdStr);
} catch (NumberFormatException e) {
// 单位ID格式错误,跳过该记录
continue;
}
// 检查单位是否存在
if (!deptStatusMap.containsKey(deptId)) {
continue;
}
// 检查是否为2025年的会议
calendar.setTime(meetingDate);
int year = calendar.get(Calendar.YEAR);
if (year != 2025) continue;
// 确定季度
int month = calendar.get(Calendar.MONTH) + 1; // 月份从0开始
String quarter = getQuarter(month);
// 更新对应季度的状态为"已提交"
AmainXq status = deptStatusMap.get(deptId);
switch (quarter) {
case "Q1":
status.setQ1("已提交");
break;
case "Q2":
status.setQ2("已提交");
break;
case "Q3":
status.setQ3("已提交");
break;
case "Q4":
status.setQ4("已提交");
break;
}
}
// 转换为列表并按单位ID排序
return deptStatusMap.values().stream()
.sorted(Comparator.comparing(AmainXq::getDeptId))
.collect(Collectors.toList());
}
/**
* 根据月份获取季度
*/
private static String getQuarter(int month) { private static String getQuarter(int month) {
if (month >= 1 && month <= 3) { if (month >= 1 && month <= 3) {
return "Q1"; return "Q1";
...@@ -110,7 +192,9 @@ public class AmainServiceImpl implements IAmainService ...@@ -110,7 +192,9 @@ public class AmainServiceImpl implements IAmainService
} }
} }
/**
* 查询费用提交情况
*/
public Map countDepartmentExpenses(List<SysDept> depts, List<SjFybpZb> fyList) { public Map countDepartmentExpenses(List<SysDept> depts, List<SjFybpZb> fyList) {
List<SysDept> safeDepts = (depts == null) ? Collections.emptyList() : depts; List<SysDept> safeDepts = (depts == null) ? Collections.emptyList() : depts;
...@@ -143,6 +227,60 @@ public class AmainServiceImpl implements IAmainService ...@@ -143,6 +227,60 @@ public class AmainServiceImpl implements IAmainService
} }
/**
* 统计各单位费用提交情况
* @param depts 单位信息列表(可能为null)
* @param fyList 费用信息列表(可能为null)
* @return 各单位费用提交状态列表
*/
public List<AmainXq> getExpenseStatus(
List<SysDept> depts, List<SjFybpZb> fyList) {
// 处理null情况,转为空列表
List<SysDept> safeDepts = (depts == null) ? Collections.emptyList() : depts;
List<SjFybpZb> safeFyList = (fyList == null) ? Collections.emptyList() : fyList;
// 初始化所有单位的状态(默认未提交)
Map<Long, AmainXq> statusMap = safeDepts.stream()
.map(dept -> new AmainXq(dept.getDeptId(),dept.getDeptName()))
.collect(Collectors.toMap(
AmainXq::getDeptId,
status -> status,
(existing, replacement) -> existing // 处理重复deptId
));
// 提取所有有费用信息的单位ID(去重)
Set<Long> hasExpenseDeptIds = safeFyList.stream()
.filter(expense -> expense != null && expense.getDeptId() != null)
.map(expense -> {
// 尝试将字符串deptId转换为Long
try {
return Long.parseLong(expense.getDeptId());
} catch (NumberFormatException e) {
return null; // 转换失败的ID忽略
}
})
.filter(Objects::nonNull) // 过滤转换失败的null值
.filter(statusMap::containsKey) // 只保留存在于单位列表中的ID
.collect(Collectors.toSet());
// 更新有费用信息的单位状态为"已提交"
for (Long deptId : hasExpenseDeptIds) {
statusMap.get(deptId).setQ1("已提交");
}
// 转换为列表并按单位ID排序
return statusMap.values().stream()
.sorted(Comparator.comparing(AmainXq::getDeptId))
.collect(Collectors.toList());
}
/**
* 按上半年和下半年统计各单位分档评价提交情况
* @param depts 单位信息列表(可能为null)
* @param fdpjList 分档评价信息列表(可能为null)
* @return 各单位分档评价提交状态列表
*/
public Map<String, Map<String, Integer>> statisticsGradingEvaluation( public Map<String, Map<String, Integer>> statisticsGradingEvaluation(
List<SysDept> depts, List<SjGfjsZsdwkhpjZb> fdpjList) { List<SysDept> depts, List<SjGfjsZsdwkhpjZb> fdpjList) {
...@@ -194,12 +332,62 @@ public class AmainServiceImpl implements IAmainService ...@@ -194,12 +332,62 @@ public class AmainServiceImpl implements IAmainService
// 整理最终结果 // 整理最终结果
Map<String, Map<String, Integer>> result = new HashMap<>(); Map<String, Map<String, Integer>> result = new HashMap<>();
result.put("Q12", firstHalfStats); result.put("Q1", firstHalfStats);
result.put("Q1234", secondHalfStats); result.put("Q2", secondHalfStats);
return result; return result;
} }
/**
* 按上半年和下半年统计各单位分档评价提交情况
* @param depts 单位信息列表(可能为null)
* @param fdpjList 分档评价信息列表(可能为null)
* @return 各单位分档评价提交状态列表
*/
public List<AmainXq> getEvaluationStatus(
List<SysDept> depts, List<SjGfjsZsdwkhpjZb> fdpjList) {
// 处理null情况,转为空列表
List<SysDept> safeDepts = (depts == null) ? Collections.emptyList() : depts;
List<SjGfjsZsdwkhpjZb> safeFdpjList = (fdpjList == null) ? Collections.emptyList() : fdpjList;
// 初始化所有单位的状态(默认未提交)
Map<Long, AmainXq> statusMap = safeDepts.stream()
.map(dept -> new AmainXq(dept.getDeptId(),dept.getDeptName()))
.collect(Collectors.toMap(
AmainXq::getDeptId,
status -> status,
(existing, replacement) -> existing // 处理重复deptId
));
// 处理分档评价数据,更新对应周期的状态
for (SjGfjsZsdwkhpjZb evaluation : safeFdpjList) {
// 跳过null记录
if (evaluation == null) continue;
Long deptId = evaluation.getDeptId();
String period = evaluation.getZqfw();
// 过滤无效数据
if (deptId == null || period == null || !statusMap.containsKey(deptId)) {
continue;
}
// 更新对应周期的状态为"已提交"
AmainXq status = statusMap.get(deptId);
if ("上半年".equals(period)) {
status.setQ1("已提交");
} else if ("全年".equals(period)) {
status.setQ2("已提交");
}
}
// 转换为列表并按单位ID排序
return statusMap.values().stream()
.sorted(Comparator.comparing(AmainXq::getDeptId))
.collect(Collectors.toList());
}
/** /**
* 统计每个月的月度问题记录填写情况(使用数字月份01-12) * 统计每个月的月度问题记录填写情况(使用数字月份01-12)
...@@ -272,6 +460,97 @@ public class AmainServiceImpl implements IAmainService ...@@ -272,6 +460,97 @@ public class AmainServiceImpl implements IAmainService
} }
/**
* 按月份统计各单位月度问题提交情况
* @param depts 单位信息列表(可能为null)
* @param ydwtList 月度问题记录列表(可能为null)
* @return 各单位月度问题提交状态列表
*/
public List<AmainXq> getMonthlyIssueStatus(
List<SysDept> depts, List<SjGfjsYdjcjl> ydwtList) {
// 处理null情况,转为空列表
List<SysDept> safeDepts = (depts == null) ? Collections.emptyList() : depts;
List<SjGfjsYdjcjl> safeYdwtList = (ydwtList == null) ? Collections.emptyList() : ydwtList;
// 初始化所有单位的月度状态(默认未提交)
Map<Long, AmainXq> statusMap = safeDepts.stream()
.map(dept -> new AmainXq(dept.getDeptId(),dept.getDeptName()))
.collect(Collectors.toMap(
AmainXq::getDeptId,
status -> status,
(existing, replacement) -> existing // 处理重复deptId
));
// 处理月度问题记录数据
for (SjGfjsYdjcjl record : safeYdwtList) {
// 跳过null的记录
if (record == null) continue;
Long deptId = record.getDeptId();
String dateStr = record.getRq();
// 过滤无效数据
if (deptId == null || dateStr == null || !statusMap.containsKey(deptId)) {
continue;
}
// 解析月份(格式为"yyyy-MM")
String[] dateParts = dateStr.split("-");
if (dateParts.length != 2) {
continue; // 日期格式不正确,跳过
}
String month = dateParts[1]; // 获取月份部分(如"07")
// 根据月份更新对应状态为"已提交"
AmainXq status = statusMap.get(deptId);
switch (month) {
case "01":
status.setY01("已提交");
break;
case "02":
status.setY02("已提交");
break;
case "03":
status.setY03("已提交");
break;
case "04":
status.setY04("已提交");
break;
case "05":
status.setY05("已提交");
break;
case "06":
status.setY06("已提交");
break;
case "07":
status.setY07("已提交");
break;
case "08":
status.setY08("已提交");
break;
case "09":
status.setY09("已提交");
break;
case "10":
status.setY10("已提交");
break;
case "11":
status.setY11("已提交");
break;
case "12":
status.setY12("已提交");
break;
}
}
// 转换为列表并按单位ID排序
return statusMap.values().stream()
.sorted(Comparator.comparing(AmainXq::getDeptId))
.collect(Collectors.toList());
}
public Map<String, Map<String, Integer>> statisticsQuarterlyTests( public Map<String, Map<String, Integer>> statisticsQuarterlyTests(
List<SysDept> depts, List<SjGfjsZsdwkhpjZb> fdpjList) { List<SysDept> depts, List<SjGfjsZsdwkhpjZb> fdpjList) {
...@@ -335,5 +614,65 @@ public class AmainServiceImpl implements IAmainService ...@@ -335,5 +614,65 @@ public class AmainServiceImpl implements IAmainService
} }
/**
* 按季度统计各单位自测提交情况
* @param depts 单位信息列表(可能为null)
* @param fdpjList 季度自测记录列表(可能为null)
* @return 各单位季度自测提交状态列表
*/
public List<AmainXq> getQuarterlyTestStatus(
List<SysDept> depts, List<SjGfjsZsdwkhpjZb> fdpjList) {
// 处理null情况,转为空列表
List<SysDept> safeDepts = (depts == null) ? Collections.emptyList() : depts;
List<SjGfjsZsdwkhpjZb> safeFdpjList = (fdpjList == null) ? Collections.emptyList() : fdpjList;
// 初始化所有单位的季度状态(默认未提交)
Map<Long, AmainXq> statusMap = safeDepts.stream()
.map(dept -> new AmainXq(dept.getDeptId(),dept.getDeptName()))
.collect(Collectors.toMap(
AmainXq::getDeptId,
status -> status,
(existing, replacement) -> existing // 处理重复deptId
));
// 处理季度自测数据,更新对应季度的状态
for (SjGfjsZsdwkhpjZb testRecord : safeFdpjList) {
// 跳过null记录
if (testRecord == null) continue;
Long deptId = testRecord.getDeptId();
String period = testRecord.getZqfw();
// 过滤无效数据
if (deptId == null || period == null || !statusMap.containsKey(deptId)) {
continue;
}
// 更新对应季度的状态为"已提交"
AmainXq status = statusMap.get(deptId);
switch (period) {
case "第一季度":
status.setQ1("已提交");
break;
case "第二季度":
status.setQ2("已提交");
break;
case "第三季度":
status.setQ3("已提交");
break;
case "第四季度":
status.setQ4("已提交");
break;
}
}
// 转换为列表并按单位ID排序
return statusMap.values().stream()
.sorted(Comparator.comparing(AmainXq::getDeptId))
.collect(Collectors.toList());
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment