| @@ -2,7 +2,9 @@ package com.ruoyi.web.controller.agentcenter; | |||||
| import com.ruoyi.agentcenter.domain.TAgentTask; | import com.ruoyi.agentcenter.domain.TAgentTask; | ||||
| import com.ruoyi.agentcenter.service.ITAgentTaskService; | import com.ruoyi.agentcenter.service.ITAgentTaskService; | ||||
| import com.ruoyi.agentcenter.vo.AgentTaskVillageGroup; | |||||
| import com.ruoyi.common.core.controller.BaseController; | import com.ruoyi.common.core.controller.BaseController; | ||||
| import com.ruoyi.common.core.domain.AjaxResult; | |||||
| import com.ruoyi.common.core.page.TableDataInfo; | import com.ruoyi.common.core.page.TableDataInfo; | ||||
| import com.ruoyi.common.utils.PageUtils; | import com.ruoyi.common.utils.PageUtils; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| @@ -15,7 +17,7 @@ import java.util.Arrays; | |||||
| import java.util.List; | import java.util.List; | ||||
| /** | /** | ||||
| * 任务清单Controller | |||||
| * 会计任务清单Controller | |||||
| * | * | ||||
| * @author zhao | * @author zhao | ||||
| * @date 2023-05-06 | * @date 2023-05-06 | ||||
| @@ -28,7 +30,7 @@ public class AccountingAgentTaskController extends BaseController | |||||
| private ITAgentTaskService tAgentTaskService; | private ITAgentTaskService tAgentTaskService; | ||||
| /** | /** | ||||
| * 获取任务清单列表(按镇村分组) | |||||
| * 待分配任务列表 | |||||
| */ | */ | ||||
| @PreAuthorize("@ss.hasPermi('agentcenter:task:list')") | @PreAuthorize("@ss.hasPermi('agentcenter:task:list')") | ||||
| @GetMapping(value = "/todoTaskList") | @GetMapping(value = "/todoTaskList") | ||||
| @@ -36,11 +38,19 @@ public class AccountingAgentTaskController extends BaseController | |||||
| { | { | ||||
| startPage(); | startPage(); | ||||
| PageUtils.orderBy("org_code"); | 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()); | |||||
| }); | |||||
| List<TAgentTask> tAgentTasks = tAgentTaskService.getTodoTaskList(task); | |||||
| return getDataTable(tAgentTasks); | return getDataTable(tAgentTasks); | ||||
| } | } | ||||
| /** | |||||
| * 已完成任务列表 | |||||
| */ | |||||
| @PreAuthorize("@ss.hasPermi('agentcenter:task:list')") | |||||
| @GetMapping(value = "/processedTaskList") | |||||
| public AjaxResult processedTaskList(TAgentTask task) | |||||
| { | |||||
| startPage(); | |||||
| List<AgentTaskVillageGroup> tAgentTasks = tAgentTaskService.getProcessedTaskList(task); | |||||
| return getDataTable(tAgentTasks).toAjaxResult().put("overdue", tAgentTaskService.getAgentTaskOverdueFinishVillageCount(task)); | |||||
| } | |||||
| } | } | ||||
| @@ -60,11 +60,11 @@ public class TAgentContraction extends BaseEntity | |||||
| private Date orderAt; | private Date orderAt; | ||||
| /** 上报年度(截) */ | /** 上报年度(截) */ | ||||
| @Excel(name = "上报年度(截)") | |||||
| @Excel(name = "上报年度") | |||||
| private String orderYear; | private String orderYear; | ||||
| /** 上报月份(截) */ | /** 上报月份(截) */ | ||||
| @Excel(name = "上报月份(截)") | |||||
| @Excel(name = "上报月份") | |||||
| private String orderMonth; | private String orderMonth; | ||||
| /** 任务状态 字典 agent_status */ | /** 任务状态 字典 agent_status */ | ||||
| @@ -23,6 +23,7 @@ public class TAgentTask extends BaseEntity | |||||
| public static final String AGENT_STATUS_READY = "1"; | public static final String AGENT_STATUS_READY = "1"; | ||||
| public static final String AGENT_STATUS_PROCESSING = "2"; | public static final String AGENT_STATUS_PROCESSING = "2"; | ||||
| public static final String AGENT_STATUS_FINISHED = "3"; | public static final String AGENT_STATUS_FINISHED = "3"; | ||||
| public static final String AGENT_STATUS_AUDITED = "4"; | |||||
| private static final long serialVersionUID = 1L; | private static final long serialVersionUID = 1L; | ||||
| @@ -106,4 +106,6 @@ public interface TAgentTaskMapper | |||||
| public List<AgentTaskTownGroup> getAgentTaskGroupByTown(TAgentTask tAgentTask); | public List<AgentTaskTownGroup> getAgentTaskGroupByTown(TAgentTask tAgentTask); | ||||
| public List<AgentTaskVillageGroup> getAgentTaskGroupByVillage(TAgentTask tAgentTask); | public List<AgentTaskVillageGroup> getAgentTaskGroupByVillage(TAgentTask tAgentTask); | ||||
| public List<AgentTaskVillageGroup> getProcessedAgentTaskGroupByVillage(TAgentTask tAgentTask); | |||||
| public Long getAgentTaskOverdueFinishVillageCount(TAgentTask tAgentTask); | |||||
| } | } | ||||
| @@ -5,6 +5,7 @@ import java.util.function.Consumer; | |||||
| import com.ruoyi.agentcenter.domain.TAgentTask; | import com.ruoyi.agentcenter.domain.TAgentTask; | ||||
| import com.ruoyi.agentcenter.vo.AgentTaskTownGroup; | import com.ruoyi.agentcenter.vo.AgentTaskTownGroup; | ||||
| import com.ruoyi.agentcenter.vo.AgentTaskVillageGroup; | |||||
| /** | /** | ||||
| * 任务清单Service接口 | * 任务清单Service接口 | ||||
| @@ -114,4 +115,8 @@ public interface ITAgentTaskService | |||||
| public int syncTAgentTaskCount(TAgentTask tAgentTask); | public int syncTAgentTaskCount(TAgentTask tAgentTask); | ||||
| public List<AgentTaskTownGroup> getTownTaskList(TAgentTask tAgentTask); | public List<AgentTaskTownGroup> getTownTaskList(TAgentTask tAgentTask); | ||||
| public List<TAgentTask> getTodoTaskList(TAgentTask tAgentTask); | |||||
| public List<AgentTaskVillageGroup> getProcessedTaskList(TAgentTask tAgentTask); | |||||
| public Long getAgentTaskOverdueFinishVillageCount(TAgentTask tAgentTask); | |||||
| } | } | ||||
| @@ -1,6 +1,7 @@ | |||||
| package com.ruoyi.agentcenter.service.impl; | package com.ruoyi.agentcenter.service.impl; | ||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||
| import java.util.Arrays; | |||||
| 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; | ||||
| @@ -17,6 +18,7 @@ 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.PageUtils; | |||||
| import com.ruoyi.common.utils.StringUtils; | 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; | ||||
| @@ -333,4 +335,42 @@ public class TAgentTaskServiceImpl implements ITAgentTaskService | |||||
| } | } | ||||
| return agentTaskGroupByTown; | return agentTaskGroupByTown; | ||||
| } | } | ||||
| @Override | |||||
| public List<TAgentTask> getTodoTaskList(TAgentTask tAgentTask) | |||||
| { | |||||
| tAgentTask.putParam("agentStatusList", Arrays.asList(TAgentTask.AGENT_STATUS_READY, TAgentTask.AGENT_STATUS_PROCESSING)); | |||||
| List<TAgentTask> tAgentTasks = tAgentTaskMapper.selectTAgentTaskList(tAgentTask); | |||||
| tAgentTasks.forEach((x) -> { | |||||
| x.setOtherCount(x.getAllCount() - x.getContracCount() - x.getVoucherCount()); | |||||
| }); | |||||
| return tAgentTasks; | |||||
| } | |||||
| @Override | |||||
| public List<AgentTaskVillageGroup> getProcessedTaskList(TAgentTask tAgentTask) | |||||
| { | |||||
| tAgentTask.putParam("agentStatusList", Arrays.asList(TAgentTask.AGENT_STATUS_FINISHED, TAgentTask.AGENT_STATUS_AUDITED)); | |||||
| List<AgentTaskVillageGroup> list = tAgentTaskMapper.getProcessedAgentTaskGroupByVillage(tAgentTask); | |||||
| if(CollectionUtil.isNotEmpty(list)) | |||||
| { | |||||
| PageUtils.orderBy("org_code"); | |||||
| List<TAgentTask> tAgentTasks = tAgentTaskMapper.selectTAgentTaskList(tAgentTask); | |||||
| tAgentTasks.forEach((x) -> { | |||||
| x.setOtherCount(x.getAllCount() - x.getContracCount() - x.getVoucherCount()); | |||||
| }); | |||||
| Map<String, List<TAgentTask>> taskGroup = ContainerUtils.groupingBy(tAgentTasks, TAgentTask::getOrgCode); | |||||
| list.forEach((x) -> { | |||||
| x.setTaskList(taskGroup.getOrDefault(x.getOrgCode(), new ArrayList<>())); | |||||
| }); | |||||
| } | |||||
| return list; | |||||
| } | |||||
| @Override | |||||
| public Long getAgentTaskOverdueFinishVillageCount(TAgentTask tAgentTask) | |||||
| { | |||||
| tAgentTask.putParam("agentStatusList", Arrays.asList(TAgentTask.AGENT_STATUS_FINISHED, TAgentTask.AGENT_STATUS_AUDITED)); | |||||
| return tAgentTaskMapper.getAgentTaskOverdueFinishVillageCount(tAgentTask); | |||||
| } | |||||
| } | } | ||||
| @@ -1,5 +1,6 @@ | |||||
| package com.ruoyi.agentcenter.vo; | package com.ruoyi.agentcenter.vo; | ||||
| import com.fasterxml.jackson.annotation.JsonFormat; | |||||
| import com.ruoyi.agentcenter.domain.TAgentTask; | import com.ruoyi.agentcenter.domain.TAgentTask; | ||||
| import lombok.Data; | import lombok.Data; | ||||
| import lombok.experimental.Accessors; | import lombok.experimental.Accessors; | ||||
| @@ -16,13 +17,14 @@ public class AgentTaskVillageGroup | |||||
| private Long numApprovalFinish; | private Long numApprovalFinish; | ||||
| private Long numExcept; | private Long numExcept; | ||||
| private String townCode; | private String townCode; | ||||
| private Long numNotApproval; | |||||
| private String orgName; | private String orgName; | ||||
| private String orgCode; | private String orgCode; | ||||
| private Long bookId; | private Long bookId; | ||||
| private String bookName; | private String bookName; | ||||
| private Date distriDate; | |||||
| private Date handleDate; | |||||
| private String distriDate; | |||||
| private String handleDate; | |||||
| private String endAt; | private String endAt; | ||||
| private String handleNick; | private String handleNick; | ||||
| @@ -570,6 +570,7 @@ | |||||
| <result property="handleDate" column="handle_date"/> | <result property="handleDate" column="handle_date"/> | ||||
| <result property="endAt" column="end_at"/> | <result property="endAt" column="end_at"/> | ||||
| <result property="handleNick" column="handle_nick"/> | <result property="handleNick" column="handle_nick"/> | ||||
| <result property="numNotApproval" column="num_not_approval"/> | |||||
| </resultMap> | </resultMap> | ||||
| <select id="getAgentTaskGroupByVillage" parameterType="TAgentTask" resultMap="AgentTaskVillageGroupResultMap"> | <select id="getAgentTaskGroupByVillage" parameterType="TAgentTask" resultMap="AgentTaskVillageGroupResultMap"> | ||||
| @@ -578,7 +579,7 @@ | |||||
| 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, | ||||
| 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(distri_date) as distri_date, handle_nick | |||||
| FROM | FROM | ||||
| t_agent_task | t_agent_task | ||||
| <where> | <where> | ||||
| @@ -595,4 +596,51 @@ | |||||
| GROUP BY org_code | GROUP BY org_code | ||||
| ORDER BY org_code | ORDER BY org_code | ||||
| </select> | </select> | ||||
| <select id="getProcessedAgentTaskGroupByVillage" parameterType="TAgentTask" resultMap="AgentTaskVillageGroupResultMap"> | |||||
| SELECT | |||||
| COUNT(*) as num, | |||||
| IFNULL(SUM(IF(is_audit != 'Y', 1, 0)), 0) as num_not_approval, | |||||
| IFNULL(SUM(IF(is_audit = 'Y', 1, 0)), 0) as num_approval_finish, | |||||
| org_name, org_code, town_code, | |||||
| MAX(end_at) as end_at, MAX(handle_date) as handle_date, MAX(distri_date) as distri_date, GROUP_CONCAT(DISTINCT audit_nick) as handle_nick | |||||
| FROM | |||||
| t_agent_task | |||||
| <where> | |||||
| AND agent_status IN ('3', '4') | |||||
| <if test="agentCenter != null and agentCenter != ''"> and agent_center = #{agentCenter}</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="orderMonth != null and orderMonth != ''"> and order_month = #{orderMonth}</if> | |||||
| <if test="params != null"> | |||||
| <if test="params.townCodeList != null"> | |||||
| AND town_code IN (null <foreach collection="params.townCodeList" item="i">,#{i}</foreach> ) | |||||
| </if> | |||||
| </if> | |||||
| </where> | |||||
| GROUP BY org_code | |||||
| ORDER BY town_code, org_code | |||||
| </select> | |||||
| <select id="getAgentTaskOverdueFinishVillageCount" parameterType="TAgentTask" resultType="Long"> | |||||
| SELECT | |||||
| COUNT(*) | |||||
| FROM | |||||
| t_agent_task | |||||
| <where> | |||||
| AND agent_status IN ('3', '4') | |||||
| AND LEFT(handle_date, 10) > end_at | |||||
| <if test="agentCenter != null and agentCenter != ''"> and agent_center = #{agentCenter}</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="orderMonth != null and orderMonth != ''"> and order_month = #{orderMonth}</if> | |||||
| <if test="params != null"> | |||||
| <if test="params.townCodeList != null"> | |||||
| AND town_code IN (null <foreach collection="params.townCodeList" item="i">,#{i}</foreach> ) | |||||
| </if> | |||||
| </if> | |||||
| </where> | |||||
| </select> | |||||
| </mapper> | </mapper> | ||||
| @@ -1,5 +1,7 @@ | |||||
| package com.ruoyi.common.core.page; | package com.ruoyi.common.core.page; | ||||
| import com.ruoyi.common.core.domain.AjaxResult; | |||||
| import java.io.Serializable; | import java.io.Serializable; | ||||
| import java.util.List; | import java.util.List; | ||||
| @@ -82,4 +84,14 @@ public class TableDataInfo implements Serializable | |||||
| { | { | ||||
| this.msg = msg; | this.msg = msg; | ||||
| } | } | ||||
| public AjaxResult toAjaxResult() | |||||
| { | |||||
| AjaxResult result = new AjaxResult(); | |||||
| result.put(AjaxResult.CODE_TAG, code); | |||||
| result.put(AjaxResult.MSG_TAG, msg); | |||||
| result.put("rows", rows); | |||||
| result.put("total", total); | |||||
| return result; | |||||
| } | |||||
| } | } | ||||