diff --git a/src/main/java/org/springblade/common/constant/BusinessConstant.java b/src/main/java/org/springblade/common/constant/BusinessConstant.java index 4fcf390..5c4b1c6 100644 --- a/src/main/java/org/springblade/common/constant/BusinessConstant.java +++ b/src/main/java/org/springblade/common/constant/BusinessConstant.java @@ -45,4 +45,14 @@ public interface BusinessConstant { Integer DISPUTE_LEVEL_ONE = 1; Integer DISPUTE_LEVEL_TWO = 2; Integer DISPUTE_LEVEL_THREE = 3; + + /** + * 诉求状态,诉求状态(办理状态)0:待处理, 1:正在处理, 2:达成协议, 3:调解成功 + */ + Integer APPEAL_STATUS_WAITING = 0; + Integer APPEAL_STATUS_HANDING = 1; + Integer APPEAL_STATUS_AGREEMENT = 2; + Integer APPEAL_STATUS_FINISH = 3; + + Long DEFAULT_HANDLE_DEPT = 1666703544732012545l; } diff --git a/src/main/java/org/springblade/common/utils/CommonUtil.java b/src/main/java/org/springblade/common/utils/CommonUtil.java index c424bc8..6fdd961 100644 --- a/src/main/java/org/springblade/common/utils/CommonUtil.java +++ b/src/main/java/org/springblade/common/utils/CommonUtil.java @@ -16,6 +16,11 @@ */ package org.springblade.common.utils; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; +import java.util.function.Predicate; + /** * 通用工具类 * @@ -23,4 +28,9 @@ package org.springblade.common.utils; */ public class CommonUtil { + public static Predicate distinctByKey(Function keyExtractor) { + Map seen = new ConcurrentHashMap<>(); + return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null; + } + } diff --git a/src/main/java/org/springblade/modules/business/entity/ServerWindowsDispute.java b/src/main/java/org/springblade/modules/business/entity/ServerWindowsDispute.java index 0b3a053..3ab8297 100644 --- a/src/main/java/org/springblade/modules/business/entity/ServerWindowsDispute.java +++ b/src/main/java/org/springblade/modules/business/entity/ServerWindowsDispute.java @@ -16,6 +16,7 @@ */ package org.springblade.modules.business.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; @@ -46,6 +47,7 @@ public class ServerWindowsDispute extends BaseEntity { /** * 窗口名称 */ + @TableField(exist = false) private Long swName; /** @@ -56,6 +58,7 @@ public class ServerWindowsDispute extends BaseEntity { /** * 纠纷名称 */ + @TableField(exist = false) private String disputeName; /** diff --git a/src/main/java/org/springblade/modules/business/mapper/AppealRegMapper.xml b/src/main/java/org/springblade/modules/business/mapper/AppealRegMapper.xml index 96b7698..79f8840 100644 --- a/src/main/java/org/springblade/modules/business/mapper/AppealRegMapper.xml +++ b/src/main/java/org/springblade/modules/business/mapper/AppealRegMapper.xml @@ -55,25 +55,12 @@ a.first_reg_time as firstRegTime, a.finish_time as finishTime, a.problem_desc as problemDesc, a.`status` FROM mp_appeal a LEFT JOIN ( - /* 先找出每个诉求的最后一次登记的第一个人 */ - SELECT t3.* - FROM ( - /* 找出每个诉求的最后一次登记记录 */ - SELECT t.* - FROM ( - SELECT *, ROW_NUMBER() OVER(PARTITION BY appeal_id - ORDER BY create_time DESC) AS row_index - FROM mp_appeal_reg reg - WHERE 1 = 1 - ) t - WHERE t.row_index = 1 - ) t2 - LEFT JOIN ( - /* 找出每次登记的第一张用户 */ - SELECT * - FROM mp_appeal_visitor vis - WHERE vis.sort = 1 - )t3 ON t2.id = t3.appeal_reg_id + /* 先找出每个诉求的最后一次登记的第一个人 */ + SELECT t3.* + /* 找出每个诉求的最后一次登记记录 */ + FROM (SELECT t.* FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY appeal_id ORDER BY create_time DESC) AS row_index FROM mp_appeal_reg reg) t WHERE t.row_index = 1) t2 + /* 找出每次登记的第一张用户 */ + LEFT JOIN (SELECT t.* FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY cardno ORDER BY sort ASC) AS row_index FROM mp_appeal_visitor vis) t WHERE t.row_index = 1) t3 ON t2.id = t3.appeal_reg_id ) b ON a.id = b.appeal_id LEFT JOIN blade_dict_biz biz ON a.dispute_id = biz.id WHERE a.source_type = 0 diff --git a/src/main/java/org/springblade/modules/business/mapper/ServerWindowsDisputeMapper.java b/src/main/java/org/springblade/modules/business/mapper/ServerWindowsDisputeMapper.java index 0131545..950275f 100644 --- a/src/main/java/org/springblade/modules/business/mapper/ServerWindowsDisputeMapper.java +++ b/src/main/java/org/springblade/modules/business/mapper/ServerWindowsDisputeMapper.java @@ -46,7 +46,7 @@ public interface ServerWindowsDisputeMapper extends BaseMapper getSwDisputePage(IPage page, @Param("swId") Long swId); + List getSwDisputePage(IPage page, @Param("swId") Long swId); /** * 根据窗口id, 更新配置状态 diff --git a/src/main/java/org/springblade/modules/business/mapper/ServerWindowsDisputeMapper.xml b/src/main/java/org/springblade/modules/business/mapper/ServerWindowsDisputeMapper.xml index dff1d3b..9cc9070 100644 --- a/src/main/java/org/springblade/modules/business/mapper/ServerWindowsDisputeMapper.xml +++ b/src/main/java/org/springblade/modules/business/mapper/ServerWindowsDisputeMapper.xml @@ -13,15 +13,19 @@ - + SELECT swId, swName, `status`, GROUP_CONCAT(disputeId) AS disputeIds, GROUP_CONCAT(disputeName) AS disputeNames + FROM ( + SELECT swd.sw_id AS swId, u.`name` AS swName, swd.dispute_id AS disputeId, + biz.dict_value AS disputeName, swd.`status` + FROM mp_server_windows_dispute swd + LEFT JOIN blade_dict_biz biz ON swd.dispute_id = biz.id + LEFT JOIN blade_user u ON swd.sw_id = u.id + + WHERE swd.sw_id = #{swId} + + ) t + GROUP BY swId, swName, `status` diff --git a/src/main/java/org/springblade/modules/business/service/impl/AppealMediationServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/AppealMediationServiceImpl.java index 294857c..e9a990b 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/AppealMediationServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/AppealMediationServiceImpl.java @@ -68,7 +68,7 @@ public class AppealMediationServiceImpl extends BaseServiceImpl getList(String appealStatus, String startTime, String endTime, String appealType, String windowId, String username) { @@ -97,6 +103,7 @@ public class AppealRegServiceImpl extends BaseServiceImpl visitors = visitorMapper.selectList( Wrappers.lambdaQuery().eq(AppealVisitor::getAppealId, appealId)); + visitors = visitors.stream().filter(CommonUtil.distinctByKey(AppealVisitor::getCardno)).collect(Collectors.toList()); // 4. 组织返回对象数据 vo.setAppealId(Long.valueOf(appealId)); @@ -125,14 +132,30 @@ public class AppealRegServiceImpl extends BaseServiceImpllambdaQuery().eq(ServerWindowsDispute::getDisputeId, appeal.getDisputeId())); + if (Func.isNotEmpty(swDispute)) { + appeal.setHandleDept(swDispute.getSwId()); + } else { + appeal.setHandleDept(BusinessConstant.DEFAULT_HANDLE_DEPT); + } + appeal.setSkipGrant(BusinessConstant.CODE_FALSE); + appeal.setStatus(BusinessConstant.APPEAL_STATUS_WAITING); + nums = appealMapper.insert(appeal); + } else { + nums = appealMapper.updateById(appeal); + } if (nums <= 0) { return false; } // 2. 将appealId赋值给appealReg, 保存appealReg对象 reg.setId(null); + reg.setAppealId(appeal.getId()); reg.setPersonNum(visitors.size()); + reg.setRegTime(DateUtil.now()); save(reg); // 3. 将appealId和appealRegId赋值给来访人员, 保存来访人员 diff --git a/src/main/java/org/springblade/modules/business/service/impl/ServerWindowsDisputeServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/ServerWindowsDisputeServiceImpl.java index fca8d29..3fd78bb 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/ServerWindowsDisputeServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/ServerWindowsDisputeServiceImpl.java @@ -54,30 +54,7 @@ public class ServerWindowsDisputeServiceImpl extends BaseServiceImpl getPage(IPage page, Long swId) { - List dtoList = baseMapper.getSwDisputePage(page, swId); - List voList = new ArrayList<>(); - - if (Func.isEmpty(dtoList)) { - page.setRecords(voList); - return page; - } - - Map> map = dtoList.stream().collect(Collectors.groupingBy(ServerWindowsDisputeDTO::getSwId)); - map.values().forEach(swdList -> { - ServerWindowsDisputeDTO dto = swdList.get(0); - String disputeIds = swdList.stream().map(ServerWindowsDisputeDTO::getDisputeId).map(String::valueOf).collect(Collectors.joining(",")); - String disputeNames = swdList.stream().map(ServerWindowsDisputeDTO::getDisputeName).collect(Collectors.joining(",")); - - SwDisputeVO vo = new SwDisputeVO(); - vo.setSwId(dto.getSwId()); - vo.setSwName(dto.getSwName()); - vo.setDisputeIds(disputeIds); - vo.setDisputeNames(disputeNames); - vo.setStatus(dto.getStatus()); - - voList.add(vo); - }); - + List voList = baseMapper.getSwDisputePage(page, swId); page.setRecords(voList); return page; }