@@ -0,0 +1,46 @@ | |||||
package com.ruoyi.web.controller.agentcenter; | |||||
import com.ruoyi.agentcenter.domain.TAgentTask; | |||||
import com.ruoyi.agentcenter.service.ITAgentTaskService; | |||||
import com.ruoyi.common.core.controller.BaseController; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.common.utils.PageUtils; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.security.access.prepost.PreAuthorize; | |||||
import org.springframework.web.bind.annotation.GetMapping; | |||||
import org.springframework.web.bind.annotation.RequestMapping; | |||||
import org.springframework.web.bind.annotation.RestController; | |||||
import java.util.Arrays; | |||||
import java.util.List; | |||||
/** | |||||
* 任务清单Controller | |||||
* | |||||
* @author zhao | |||||
* @date 2023-05-06 | |||||
*/ | |||||
@RestController | |||||
@RequestMapping("/accounting/task") | |||||
public class AccountingAgentTaskController extends BaseController | |||||
{ | |||||
@Autowired | |||||
private ITAgentTaskService tAgentTaskService; | |||||
/** | |||||
* 获取任务清单列表(按镇村分组) | |||||
*/ | |||||
@PreAuthorize("@ss.hasPermi('agentcenter:task:list')") | |||||
@GetMapping(value = "/todoTaskList") | |||||
public TableDataInfo todoTaskList(TAgentTask task) | |||||
{ | |||||
startPage(); | |||||
PageUtils.orderBy("org_code"); | |||||
task.putParam("agentStatusList", Arrays.asList(TAgentTask.AGENT_STATUS_READY, TAgentTask.AGENT_STATUS_PROCESSING)); | |||||
List<TAgentTask> tAgentTasks = tAgentTaskService.selectTAgentTaskList(task); | |||||
tAgentTasks.forEach((x) -> { | |||||
x.setOtherCount(x.getAllCount() - x.getContracCount() - x.getVoucherCount()); | |||||
}); | |||||
return getDataTable(tAgentTasks); | |||||
} | |||||
} |
@@ -44,7 +44,6 @@ public class AgentTaskController extends BaseController | |||||
public TableDataInfo taskList(TAgentTask task) | public TableDataInfo taskList(TAgentTask task) | ||||
{ | { | ||||
startPage(); | startPage(); | ||||
task.setEndAt(DateUtils.getDate()); | |||||
return getDataTable(tAgentTaskService.getTownTaskList(task)); | return getDataTable(tAgentTaskService.getTownTaskList(task)); | ||||
} | } | ||||
} | } |
@@ -68,11 +68,11 @@ public class TAgentContraction extends BaseEntity | |||||
private String orderMonth; | private String orderMonth; | ||||
/** 任务状态 字典 agent_status */ | /** 任务状态 字典 agent_status */ | ||||
@Excel(name = "任务状态 字典 agent_status") | |||||
@Excel(name = "任务状态", dictType = "agent_status") | |||||
private String agentStatus; | private String agentStatus; | ||||
/** 记账状态 字典 order_status */ | /** 记账状态 字典 order_status */ | ||||
@Excel(name = "记账状态 字典 order_status") | |||||
@Excel(name = "记账状态", dictType = "order_status") | |||||
private String orderStatus; | private String orderStatus; | ||||
public void normalized() | public void normalized() | ||||
@@ -80,4 +80,6 @@ public class TAgentContraction extends BaseEntity | |||||
orderYear = DateUtil.format(orderAt, "yyyy"); | orderYear = DateUtil.format(orderAt, "yyyy"); | ||||
orderMonth = DateUtil.format(orderAt, "MM"); | orderMonth = DateUtil.format(orderAt, "MM"); | ||||
} | } | ||||
private Long rootId; | |||||
} | } |
@@ -168,4 +168,7 @@ public class TAgentTask extends BaseEntity | |||||
@Excel(name = "是否评价", dictType = "sys_yes_no") | @Excel(name = "是否评价", dictType = "sys_yes_no") | ||||
private String isAppraise; | private String isAppraise; | ||||
/** 其他数 */ | |||||
@Excel(name = "其他数") | |||||
private Integer otherCount; | |||||
} | } |
@@ -99,4 +99,6 @@ public interface TAgentContractionMapper | |||||
* @return 合同任务是否存在 | * @return 合同任务是否存在 | ||||
*/ | */ | ||||
public int selectTAgentContractionExists(TAgentContraction tAgentContraction); | public int selectTAgentContractionExists(TAgentContraction tAgentContraction); | ||||
public List<TAgentContraction> getAgentContractionGroupByDept(TAgentContraction tAgentContraction); | |||||
} | } |
@@ -36,10 +36,10 @@ public class AgentCenterImpl implements IAgentCenter | |||||
return protocol; | return protocol; | ||||
} | } | ||||
public Session<?> createSession(NSSDKServer server, HttpServletRequest request) | |||||
public Session<? extends NSMessage> createSession(NSSDKServer server, HttpServletRequest request) | |||||
{ | { | ||||
NSReportObject<? extends NSMessage> reportObject; | NSReportObject<? extends NSMessage> reportObject; | ||||
Session<?> session; | |||||
Session<? extends NSMessage> session; | |||||
Class<? extends NSMessage> clazz; | Class<? extends NSMessage> clazz; | ||||
int protocol; | int protocol; | ||||
@@ -64,7 +64,7 @@ public class AgentCenterImpl implements IAgentCenter | |||||
return session; | return session; | ||||
} | } | ||||
private void check(Session<?> session, HttpServletRequest request) | |||||
private void check(Session<? extends NSMessage> session, HttpServletRequest request) | |||||
{ | { | ||||
Assert.notNull(session, "无效消息"); | Assert.notNull(session, "无效消息"); | ||||
String identifier = session.identifier; | String identifier = session.identifier; | ||||
@@ -73,6 +73,8 @@ public class AgentCenterImpl implements IAgentCenter | |||||
Assert.notNull(dept, "不支持的地区: {}", identifier); | Assert.notNull(dept, "不支持的地区: {}", identifier); | ||||
String remoteUrl = dept.getRemoteUrl(); | String remoteUrl = dept.getRemoteUrl(); | ||||
Assert.notBlank(remoteUrl, "该地区无项目: {}", identifier); | Assert.notBlank(remoteUrl, "该地区无项目: {}", identifier); | ||||
session.data.setDeptId(dept.getDeptId()); | |||||
/*try | /*try | ||||
{ | { | ||||
URL url = new URL(remoteUrl); | URL url = new URL(remoteUrl); | ||||
@@ -94,7 +96,7 @@ public class AgentCenterImpl implements IAgentCenter | |||||
@Override | @Override | ||||
public Session<?> postHandle(NSSDKServer server, HttpServletRequest request) | public Session<?> postHandle(NSSDKServer server, HttpServletRequest request) | ||||
{ | { | ||||
Session<?> session; | |||||
Session<? extends NSMessage> session; | |||||
session = createSession(server, request); | session = createSession(server, request); | ||||
check(session, request); | check(session, request); | ||||
@@ -4,15 +4,20 @@ import java.util.ArrayList; | |||||
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | import java.util.Map; | ||||
import java.util.function.Consumer; | import java.util.function.Consumer; | ||||
import java.util.stream.Collectors; | |||||
import cn.hutool.core.collection.CollectionUtil; | import cn.hutool.core.collection.CollectionUtil; | ||||
import cn.hutool.core.lang.Assert; | import cn.hutool.core.lang.Assert; | ||||
import com.ruoyi.agentcenter.domain.TAgentContraction; | |||||
import com.ruoyi.agentcenter.mapper.TAgentContractionMapper; | |||||
import com.ruoyi.agentcenter.vo.AgentTaskTownGroup; | import com.ruoyi.agentcenter.vo.AgentTaskTownGroup; | ||||
import com.ruoyi.agentcenter.vo.AgentTaskVillageGroup; | import com.ruoyi.agentcenter.vo.AgentTaskVillageGroup; | ||||
import com.ruoyi.common.core.domain.entity.SysDept; | import com.ruoyi.common.core.domain.entity.SysDept; | ||||
import com.ruoyi.common.enums.Enums; | |||||
import com.ruoyi.common.utils.ContainerUtils; | import com.ruoyi.common.utils.ContainerUtils; | ||||
import com.ruoyi.common.utils.DateUtils; | import com.ruoyi.common.utils.DateUtils; | ||||
import com.ruoyi.common.utils.DeptUtils; | import com.ruoyi.common.utils.DeptUtils; | ||||
import com.ruoyi.common.utils.StringUtils; | |||||
import com.ruoyi.system.mapper.SysDeptMapper; | import com.ruoyi.system.mapper.SysDeptMapper; | ||||
import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
@@ -34,7 +39,9 @@ public class TAgentTaskServiceImpl implements ITAgentTaskService | |||||
@Autowired | @Autowired | ||||
private TAgentTaskMapper tAgentTaskMapper; | private TAgentTaskMapper tAgentTaskMapper; | ||||
@Autowired | @Autowired | ||||
private SysDeptMapper sysDeptMapper; | |||||
private SysDeptMapper sysDeptMapper; | |||||
@Autowired | |||||
private TAgentContractionMapper agentContractionMapper; | |||||
/** | /** | ||||
* 查询任务清单 | * 查询任务清单 | ||||
@@ -286,9 +293,26 @@ public class TAgentTaskServiceImpl implements ITAgentTaskService | |||||
List<AgentTaskTownGroup> agentTaskGroupByTown = tAgentTaskMapper.getAgentTaskGroupByTown(tAgentTask); | List<AgentTaskTownGroup> agentTaskGroupByTown = tAgentTaskMapper.getAgentTaskGroupByTown(tAgentTask); | ||||
if(CollectionUtil.isNotEmpty(agentTaskGroupByTown)) | if(CollectionUtil.isNotEmpty(agentTaskGroupByTown)) | ||||
{ | { | ||||
List<SysDept> deptList = sysDeptMapper.getDeptList(new SysDept()); | |||||
Long rootId; | |||||
if(StringUtils.isNotEmpty(tAgentTask.getTownCode())) | |||||
rootId = deptList.stream().filter((x) -> tAgentTask.getTownCode().equals(x.getOrgCode())).map(SysDept::getParentId).findFirst().get(); | |||||
else | |||||
rootId = deptList.stream().filter((x) -> tAgentTask.getCountyCode().equals(x.getOrgCode())).map(SysDept::getDeptId).findFirst().get(); | |||||
TAgentContraction contractionCond = new TAgentContraction(); | |||||
contractionCond.setOrderStatus(Enums.OrderStatus.PAUSE); | |||||
contractionCond.putParam("task", tAgentTask); | |||||
List<TAgentContraction> contractionList = agentContractionMapper.getAgentContractionGroupByDept(contractionCond); | |||||
Map<Long, Long> townExceptMap = DeptUtils.groupByDept(rootId, deptList, contractionList, TAgentContraction::getDeptId, Collectors.mapping(TAgentContraction::getId, Collectors.reducing(0L, Long::sum)), null); | |||||
List<String> townCodeList = ContainerUtils.mapToList(agentTaskGroupByTown, AgentTaskTownGroup::getTownCode); | List<String> townCodeList = ContainerUtils.mapToList(agentTaskGroupByTown, AgentTaskTownGroup::getTownCode); | ||||
Map<String, Long> contractionMap = ContainerUtils.toMap(contractionList, TAgentContraction::getOrgCode, TAgentContraction::getId); | |||||
List<AgentTaskVillageGroup> villageGroups = tAgentTaskMapper.getAgentTaskGroupByVillage(new TAgentTask().putParam("townCodeList", townCodeList)); | List<AgentTaskVillageGroup> villageGroups = tAgentTaskMapper.getAgentTaskGroupByVillage(new TAgentTask().putParam("townCodeList", townCodeList)); | ||||
villageGroups.forEach((x) -> { | |||||
x.setNumExcept(contractionMap.getOrDefault(x.getOrgCode(), 0L)); | |||||
}); | |||||
Map<String, List<AgentTaskVillageGroup>> villageMap = ContainerUtils.groupingBy(villageGroups, AgentTaskVillageGroup::getTownCode); | Map<String, List<AgentTaskVillageGroup>> villageMap = ContainerUtils.groupingBy(villageGroups, AgentTaskVillageGroup::getTownCode); | ||||
List<String> orgCodeList = ContainerUtils.mapToList(villageGroups, AgentTaskVillageGroup::getOrgCode); | List<String> orgCodeList = ContainerUtils.mapToList(villageGroups, AgentTaskVillageGroup::getOrgCode); | ||||
@@ -298,7 +322,9 @@ public class TAgentTaskServiceImpl implements ITAgentTaskService | |||||
List<TAgentTask> tAgentTasks = tAgentTaskMapper.selectTAgentTaskList(agentTaskCond); | List<TAgentTask> tAgentTasks = tAgentTaskMapper.selectTAgentTaskList(agentTaskCond); | ||||
Map<String, List<TAgentTask>> bookGroup = ContainerUtils.groupingBy(tAgentTasks, TAgentTask::getOrgCode); | Map<String, List<TAgentTask>> bookGroup = ContainerUtils.groupingBy(tAgentTasks, TAgentTask::getOrgCode); | ||||
Map<String, Long> deptIdMap = ContainerUtils.toMap(deptList, SysDept::getOrgCode, SysDept::getDeptId); | |||||
agentTaskGroupByTown.forEach((town) -> { | agentTaskGroupByTown.forEach((town) -> { | ||||
town.setNumExcept(townExceptMap.getOrDefault(deptIdMap.get(town.getTownCode()), 0L)); | |||||
town.setVillageList(villageMap.getOrDefault(town.getTownCode(), new ArrayList<>())); | town.setVillageList(villageMap.getOrDefault(town.getTownCode(), new ArrayList<>())); | ||||
town.getVillageList().forEach((village) -> { | town.getVillageList().forEach((village) -> { | ||||
village.setTaskList(bookGroup.getOrDefault(village.getOrgCode(), new ArrayList<>())); | village.setTaskList(bookGroup.getOrDefault(village.getOrgCode(), new ArrayList<>())); | ||||
@@ -247,6 +247,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||||
<if test="orderMonth != null and orderMonth != ''"> and order_month = #{orderMonth}</if> | <if test="orderMonth != null and orderMonth != ''"> and order_month = #{orderMonth}</if> | ||||
<if test="agentStatus != null and agentStatus != ''"> and agent_status = #{agentStatus}</if> | <if test="agentStatus != null and agentStatus != ''"> and agent_status = #{agentStatus}</if> | ||||
<if test="orderStatus != null and orderStatus != ''"> and order_status = #{orderStatus}</if> | <if test="orderStatus != null and orderStatus != ''"> and order_status = #{orderStatus}</if> | ||||
<if test="rootId != null "> and (dept_id = #{rootId} OR dept_id IN (SELECT dept_id FROM sys_dept WHERE FIND_IN_SET(#{rootId}, ancestors)))</if> | |||||
</where> | </where> | ||||
</select> | </select> | ||||
@@ -271,4 +272,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||||
limit 1 | limit 1 | ||||
) | ) | ||||
</select> | </select> | ||||
<select id="getAgentContractionGroupByDept" parameterType="TAgentContraction" resultMap="TAgentContractionResult"> | |||||
select count(*) as id, org_code, dept_id from t_agent_contraction | |||||
<where> | |||||
<if test="taskId != null "> and task_id = #{taskId}</if> | |||||
<if test="orgCode != null and orgCode != ''"> and org_code = #{orgCode}</if> | |||||
<if test="outId != null "> and out_id = #{outId}</if> | |||||
<if test="bookId != null "> and book_id = #{bookId}</if> | |||||
<if test="deptId != null "> and dept_id = #{deptId}</if> | |||||
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if> | |||||
<if test="buildingTime != null and buildingTime != ''"> and building_time = #{buildingTime}</if> | |||||
<if test="orderAt != null "> and order_at = #{orderAt}</if> | |||||
<if test="orderYear != null and orderYear != ''"> and order_year = #{orderYear}</if> | |||||
<if test="orderMonth != null and orderMonth != ''"> and order_month = #{orderMonth}</if> | |||||
<if test="agentStatus != null and agentStatus != ''"> and agent_status = #{agentStatus}</if> | |||||
<if test="orderStatus != null and orderStatus != ''"> and order_status = #{orderStatus}</if> | |||||
<if test="rootId != null "> and (dept_id = #{rootId} OR dept_id IN (SELECT dept_id FROM sys_dept WHERE FIND_IN_SET(#{rootId}, ancestors)))</if> | |||||
<if test="params != null"> | |||||
<if test="params.task != null"> | |||||
AND task_id IN (SELECT id FROM t_agent_task | |||||
<where> | |||||
<if test="params.task.agentCenter != null and params.task.agentCenter != ''"> and agent_center = #{params.task.agentCenter}</if> | |||||
<if test="params.task.townCode != null and params.task.townCode != ''"> and town_code = #{params.task.townCode}</if> | |||||
<if test="params.task.countyCode != null and params.task.countyCode != ''"> and county_code = #{params.task.countyCode}</if> | |||||
<if test="params.task.orderYear != null and params.task.orderYear != ''"> and order_year = #{params.task.orderYear}</if> | |||||
<if test="params.task.orderMonth != null and params.task.orderMonth != ''"> and order_month = #{params.task.orderMonth}</if> | |||||
</where> | |||||
) | |||||
</if> | |||||
</if> | |||||
</where> | |||||
GROUP BY org_code | |||||
</select> | |||||
</mapper> | </mapper> |
@@ -91,6 +91,9 @@ | |||||
<if test="params.orgCodeList != null"> | <if test="params.orgCodeList != null"> | ||||
AND org_code IN (null <foreach collection="params.orgCodeList" item="i">,#{i}</foreach> ) | AND org_code IN (null <foreach collection="params.orgCodeList" item="i">,#{i}</foreach> ) | ||||
</if> | </if> | ||||
<if test="params.agentStatusList != null"> | |||||
AND agent_status IN (null <foreach collection="params.agentStatusList" item="i">,#{i}</foreach> ) | |||||
</if> | |||||
</if> | </if> | ||||
</where> | </where> | ||||
</select> | </select> | ||||
@@ -538,7 +541,6 @@ | |||||
COUNT(*) as num, | COUNT(*) as num, | ||||
IFNULL(SUM(IF(agent_status = '3', 1, 0)), 0) as num_process_finish, | IFNULL(SUM(IF(agent_status = '3', 1, 0)), 0) as num_process_finish, | ||||
IFNULL(SUM(IF(is_audit = 'Y', 1, 0)), 0) as num_approval_finish, | IFNULL(SUM(IF(is_audit = 'Y', 1, 0)), 0) as num_approval_finish, | ||||
IFNULL(SUM(IF(agent_status != '3' AND end_at < #{endAt}, 1, 0)), 0) as num_except, | |||||
town_name, town_code, | town_name, town_code, | ||||
order_year, order_month | order_year, order_month | ||||
FROM | FROM | ||||
@@ -546,6 +548,7 @@ | |||||
<where> | <where> | ||||
<if test="agentCenter != null and agentCenter != ''"> and agent_center = #{agentCenter}</if> | <if test="agentCenter != null and agentCenter != ''"> and agent_center = #{agentCenter}</if> | ||||
<if test="countyCode != null and countyCode != ''"> and county_code = #{countyCode}</if> | <if test="countyCode != null and countyCode != ''"> and county_code = #{countyCode}</if> | ||||
<if test="townCode != null and townCode != ''"> and town_code = #{townCode}</if> | |||||
<if test="orderYear != null and orderYear != ''"> and order_year = #{orderYear}</if> | <if test="orderYear != null and orderYear != ''"> and order_year = #{orderYear}</if> | ||||
<if test="orderMonth != null and orderMonth != ''"> and order_month = #{orderMonth}</if> | <if test="orderMonth != null and orderMonth != ''"> and order_month = #{orderMonth}</if> | ||||
</where> | </where> | ||||
@@ -574,7 +577,6 @@ | |||||
COUNT(*) as num, | COUNT(*) as num, | ||||
IFNULL(SUM(IF(agent_status = '3', 1, 0)), 0) as num_process_finish, | IFNULL(SUM(IF(agent_status = '3', 1, 0)), 0) as num_process_finish, | ||||
IFNULL(SUM(IF(is_audit = 'Y', 1, 0)), 0) as num_approval_finish, | IFNULL(SUM(IF(is_audit = 'Y', 1, 0)), 0) as num_approval_finish, | ||||
IFNULL(SUM(IF(agent_status != '3' AND end_at < #{endAt}, 1, 0)), 0) as num_except, | |||||
org_name, org_code, town_code, | org_name, org_code, town_code, | ||||
MAX(end_at) as end_at, MAX(handle_date) as handle_date, MAX(end_at) as end_at, handle_nick | MAX(end_at) as end_at, MAX(handle_date) as handle_date, MAX(end_at) as end_at, handle_nick | ||||
FROM | FROM | ||||
@@ -53,6 +53,14 @@ public class BaseController | |||||
* 设置请求分页数据 | * 设置请求分页数据 | ||||
*/ | */ | ||||
protected void startPage() | protected void startPage() | ||||
{ | |||||
PageUtils.startPageIf(); | |||||
} | |||||
/** | |||||
* 设置请求分页数据 | |||||
*/ | |||||
protected void mustPage() | |||||
{ | { | ||||
PageUtils.startPage(); | PageUtils.startPage(); | ||||
} | } | ||||
@@ -301,4 +301,27 @@ public class SysDept extends BaseEntity | |||||
{ | { | ||||
this.orgCodeLength = orgCodeLength; | this.orgCodeLength = orgCodeLength; | ||||
} | } | ||||
private List<Long> childrenIdList; | |||||
private List<Long> ancestorsIdList; | |||||
public List<Long> getChildrenIdList() | |||||
{ | |||||
return childrenIdList; | |||||
} | |||||
public void setChildrenIdList(List<Long> childrenIdList) | |||||
{ | |||||
this.childrenIdList = childrenIdList; | |||||
} | |||||
public List<Long> getAncestorsIdList() | |||||
{ | |||||
return ancestorsIdList; | |||||
} | |||||
public void setAncestorsIdList(List<Long> ancestorsIdList) | |||||
{ | |||||
this.ancestorsIdList = ancestorsIdList; | |||||
} | |||||
} | } |
@@ -49,6 +49,17 @@ public class TableSupport | |||||
return pageDomain; | return pageDomain; | ||||
} | } | ||||
public static PageDomain getPageDomain(Integer pageNum, Integer pageSize) | |||||
{ | |||||
PageDomain pageDomain = new PageDomain(); | |||||
pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), pageNum)); | |||||
pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), pageSize)); | |||||
pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN)); | |||||
pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC)); | |||||
pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE)); | |||||
return pageDomain; | |||||
} | |||||
public static PageDomain buildPageRequest() | public static PageDomain buildPageRequest() | ||||
{ | { | ||||
return getPageDomain(); | return getPageDomain(); | ||||
@@ -0,0 +1,11 @@ | |||||
package com.ruoyi.common.enums; | |||||
public final class Enums | |||||
{ | |||||
public final static class OrderStatus | |||||
{ | |||||
public static final String READY = "2"; // 待记账 | |||||
public static final String FINISHED = "3"; // 已记账 | |||||
public static final String PAUSE = "4"; // 已挂起 | |||||
} | |||||
} |
@@ -1,5 +1,17 @@ | |||||
package com.ruoyi.common.utils; | package com.ruoyi.common.utils; | ||||
import cn.hutool.core.collection.CollectionUtil; | |||||
import com.ruoyi.common.core.domain.entity.SysDept; | |||||
import java.util.ArrayList; | |||||
import java.util.Collections; | |||||
import java.util.HashMap; | |||||
import java.util.List; | |||||
import java.util.Map; | |||||
import java.util.function.Function; | |||||
import java.util.stream.Collector; | |||||
import java.util.stream.Collectors; | |||||
public final class DeptUtils | public final class DeptUtils | ||||
{ | { | ||||
public static final int LEVEL_INVALID = 0; // 无效 | public static final int LEVEL_INVALID = 0; // 无效 | ||||
@@ -144,5 +156,58 @@ public final class DeptUtils | |||||
return null == level ? LEVEL_INVALID : Integer.parseInt(level); | return null == level ? LEVEL_INVALID : Integer.parseInt(level); | ||||
} | } | ||||
public static List<SysDept> getSubDepts_selfAndAllChildren(Long deptId, List<SysDept> depts) | |||||
{ | |||||
if(CollectionUtil.isEmpty(depts)) | |||||
return new ArrayList<>(); | |||||
if(depts.size() == 1) | |||||
{ | |||||
SysDept dept = depts.get(0); | |||||
if(deptId.equals(dept.getDeptId())) | |||||
{ | |||||
dept.setChildren(new ArrayList<>(depts)); | |||||
dept.setChildrenIdList(new ArrayList<>(Collections.singletonList(dept.getDeptId()))); | |||||
return depts; | |||||
} | |||||
else | |||||
return new ArrayList<>(); | |||||
} | |||||
//depts.removeIf((x) -> deptId.equals(x.getDeptId())); | |||||
depts.forEach((x) -> x.setAncestorsIdList(x.makeAncestorsIdList(true))); | |||||
List<SysDept> res = depts.stream() | |||||
.filter((x) -> deptId.equals(x.getParentId())) | |||||
.peek((x) -> x.setChildren(new ArrayList<>(Collections.singletonList(x)))) | |||||
.peek((x) -> x.setChildrenIdList(new ArrayList<>(Collections.singletonList(x.getDeptId())))) | |||||
.peek((x) -> x.getChildren().addAll(depts.stream().filter((y) -> CollectionUtil.contains(y.getAncestorsIdList(), x.getDeptId())).collect(Collectors.toList()))) | |||||
.peek((x) -> x.getChildrenIdList().addAll(depts.stream().filter((y) -> CollectionUtil.contains(y.getAncestorsIdList(), x.getDeptId())).map(SysDept::getDeptId).collect(Collectors.toList()))) | |||||
.collect(Collectors.toList()); | |||||
return res; | |||||
} | |||||
public static <T> Map<Long, List<T>> groupByDept(Long deptId, List<SysDept> allDepts, List<T> list, Function<T, Long> getDeptId, List<SysDept> returnDeptList) | |||||
{ | |||||
return groupByDept(deptId, allDepts, list, getDeptId, Collectors.toList(), returnDeptList); | |||||
} | |||||
public static <T, A, R> Map<Long, R> groupByDept(Long deptId, List<SysDept> allDepts, List<T> list, Function<T, Long> getDeptId, Collector<T, A, R> collector, List<SysDept> returnDeptList) | |||||
{ | |||||
List<SysDept> depts = getSubDepts_selfAndAllChildren(deptId, allDepts); | |||||
Map<Long, Long> deptMap = new HashMap<>(); | |||||
depts.forEach((x) -> { | |||||
deptMap.put(x.getDeptId(), x.getDeptId()); | |||||
x.getChildrenIdList().forEach((y) -> { | |||||
deptMap.put(y, x.getDeptId()); | |||||
}); | |||||
}); | |||||
Map<Long, R> collect = list.stream() | |||||
.collect(Collectors.groupingBy((x) -> deptMap.getOrDefault(getDeptId.apply(x), 0L), collector)); | |||||
if(null != returnDeptList) | |||||
{ | |||||
returnDeptList.addAll(depts); | |||||
} | |||||
return collect; | |||||
} | |||||
private DeptUtils() {} | private DeptUtils() {} | ||||
} | } |
@@ -25,6 +25,30 @@ public class PageUtils extends PageHelper | |||||
PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable); | PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable); | ||||
} | } | ||||
/** | |||||
* 设置请求分页数据 | |||||
*/ | |||||
public static void startPageIf() | |||||
{ | |||||
PageDomain pageDomain = TableSupport.getPageDomain(null, null); | |||||
Integer pageNum = pageDomain.getPageNum(); | |||||
Integer pageSize = pageDomain.getPageSize(); | |||||
if(null != pageNum && null != pageSize) | |||||
{ | |||||
PageHelper.startPage(pageNum, pageSize); | |||||
} | |||||
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); | |||||
if(StringUtils.isNotEmpty(orderBy)) | |||||
{ | |||||
PageHelper.orderBy(orderBy); | |||||
} | |||||
if(null != PageHelper.getLocalPage()) | |||||
{ | |||||
Boolean reasonable = pageDomain.getReasonable(); | |||||
PageHelper.getLocalPage().setReasonable(reasonable); | |||||
} | |||||
} | |||||
/** | /** | ||||
* 清理分页的线程变量 | * 清理分页的线程变量 | ||||
*/ | */ | ||||
@@ -139,4 +139,5 @@ public interface ISysDeptService | |||||
public List<SysDept> getDeptTree(SysDept dept); | public List<SysDept> getDeptTree(SysDept dept); | ||||
public List<SysDept> getCityTree(SysDept dept); | public List<SysDept> getCityTree(SysDept dept); | ||||
public SysDept selectSysDeptByOrgCode(String orgCode); | |||||
} | } |
@@ -382,4 +382,10 @@ public class SysDeptServiceImpl implements ISysDeptService | |||||
depts.removeIf((x) -> x.orgCodeLength() != 6); | depts.removeIf((x) -> x.orgCodeLength() != 6); | ||||
return depts; | return depts; | ||||
} | } | ||||
@Override | |||||
public SysDept selectSysDeptByOrgCode(String orgCode) | |||||
{ | |||||
return deptMapper.selectSysDeptByOrgCode(orgCode); | |||||
} | |||||
} | } |