master
liuqingkun 3 years ago
parent b6780b7a7b
commit 28fc0241e6
  1. 10
      src/main/java/org/springblade/common/constant/BusinessConstant.java
  2. 10
      src/main/java/org/springblade/common/utils/CommonUtil.java
  3. 3
      src/main/java/org/springblade/modules/business/entity/ServerWindowsDispute.java
  4. 25
      src/main/java/org/springblade/modules/business/mapper/AppealRegMapper.xml
  5. 2
      src/main/java/org/springblade/modules/business/mapper/ServerWindowsDisputeMapper.java
  6. 22
      src/main/java/org/springblade/modules/business/mapper/ServerWindowsDisputeMapper.xml
  7. 2
      src/main/java/org/springblade/modules/business/service/impl/AppealMediationServiceImpl.java
  8. 33
      src/main/java/org/springblade/modules/business/service/impl/AppealRegServiceImpl.java
  9. 25
      src/main/java/org/springblade/modules/business/service/impl/ServerWindowsDisputeServiceImpl.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;
}

@ -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 <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
}

@ -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;
/**

@ -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

@ -46,7 +46,7 @@ public interface ServerWindowsDisputeMapper extends BaseMapper<ServerWindowsDisp
* @param swId 窗口id
* @return
*/
List<ServerWindowsDisputeDTO> getSwDisputePage(IPage<SwDisputeVO> page, @Param("swId") Long swId);
List<SwDisputeVO> getSwDisputePage(IPage<SwDisputeVO> page, @Param("swId") Long swId);
/**
* 根据窗口id, 更新配置状态

@ -13,15 +13,19 @@
</if>
</select>
<select id="getSwDisputePage" resultType="org.springblade.modules.business.dto.ServerWindowsDisputeDTO">
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
<if test="swId != null and swId != ''">
WHERE swd.sw_id = #{swId}
</if>
<select id="getSwDisputePage" resultType="org.springblade.modules.business.vo.SwDisputeVO">
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
<if test="swId != null and swId != ''">
WHERE swd.sw_id = #{swId}
</if>
) t
GROUP BY swId, swName, `status`
</select>
<update id="updateStatusBySwId">

@ -68,7 +68,7 @@ public class AppealMediationServiceImpl extends BaseServiceImpl<AppealMediationM
AppealReg reg = BeanUtil.copy(entity, AppealReg.class);
AppealMediation mediation = BeanUtil.copy(entity, AppealMediation.class);
if (Func.isEmpty(appeal))
if (Func.isEmpty(appeal.getId()))
return false;
appeal.setSourceType(BusinessConstant.SOURCE_TYPE_SYSTEM);

@ -25,12 +25,15 @@ import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.constant.BusinessConstant;
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.utils.CommonUtil;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.business.entity.Appeal;
import org.springblade.modules.business.entity.AppealReg;
import org.springblade.modules.business.entity.AppealVisitor;
import org.springblade.modules.business.entity.ServerWindowsDispute;
import org.springblade.modules.business.excel.AppealExcel;
import org.springblade.modules.business.mapper.AppealMapper;
import org.springblade.modules.business.mapper.AppealRegMapper;
@ -38,6 +41,7 @@ import org.springblade.modules.business.mapper.AppealVisitorMapper;
import org.springblade.modules.business.service.IAppealRegService;
import org.springblade.modules.business.service.IAppealService;
import org.springblade.modules.business.service.IAppealVisitorService;
import org.springblade.modules.business.service.IServerWindowsDisputeService;
import org.springblade.modules.business.vo.AppealListVO;
import org.springblade.modules.business.vo.AppealRegVO;
import org.springblade.modules.system.entity.DictBiz;
@ -49,10 +53,11 @@ import org.springframework.transaction.annotation.Transactional;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
/**
* 服务实现类
@ -70,6 +75,7 @@ public class AppealRegServiceImpl extends BaseServiceImpl<AppealRegMapper, Appea
private final IAppealService appealService;
private final IUserService userService;
private final IDictBizService dictBizService;
private final IServerWindowsDisputeService swDisputeService;
@Override
public List<AppealListVO> getList(String appealStatus, String startTime, String endTime, String appealType, String windowId, String username) {
@ -97,6 +103,7 @@ public class AppealRegServiceImpl extends BaseServiceImpl<AppealRegMapper, Appea
// 3. 获取诉求的所有来访人员
List<AppealVisitor> visitors = visitorMapper.selectList(
Wrappers.<AppealVisitor>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 BaseServiceImpl<AppealRegMapper, Appea
// 1. 先保存appeal, 固定数据来源为系统
appeal.setSourceType(BusinessConstant.SOURCE_TYPE_SYSTEM);
int nums = Func.isEmpty(appeal.getId()) ? appealMapper.insert(appeal) : appealMapper.updateById(appeal);
int nums = 0;
appeal.setFirstRegTime(DateUtil.now());
if (Func.isEmpty(appeal.getId())) {
ServerWindowsDispute swDispute = swDisputeService.getOne(Wrappers.<ServerWindowsDispute>lambdaQuery().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赋值给来访人员, 保存来访人员

@ -54,30 +54,7 @@ public class ServerWindowsDisputeServiceImpl extends BaseServiceImpl<ServerWindo
@Override
public IPage<SwDisputeVO> getPage(IPage<SwDisputeVO> page, Long swId) {
List<ServerWindowsDisputeDTO> dtoList = baseMapper.getSwDisputePage(page, swId);
List<SwDisputeVO> voList = new ArrayList<>();
if (Func.isEmpty(dtoList)) {
page.setRecords(voList);
return page;
}
Map<Long, List<ServerWindowsDisputeDTO>> 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<SwDisputeVO> voList = baseMapper.getSwDisputePage(page, swId);
page.setRecords(voList);
return page;
}

Loading…
Cancel
Save