诉求登记代码完成

master
liuqingkun 3 years ago
parent aea5a8bbd1
commit 61dac9c82d
  1. 102
      doc/api.md
  2. 5
      src/main/java/org/springblade/modules/business/controller/AppealRegController.java
  3. 18
      src/main/java/org/springblade/modules/business/mapper/AppealRegMapper.java
  4. 76
      src/main/java/org/springblade/modules/business/mapper/AppealRegMapper.xml
  5. 2
      src/main/java/org/springblade/modules/business/service/IAppealRegService.java
  6. 76
      src/main/java/org/springblade/modules/business/service/impl/AppealRegServiceImpl.java
  7. 58
      src/main/java/org/springblade/modules/business/vo/AppealRegVO.java

@ -285,35 +285,46 @@
- 返回示例
```json
{
"code": 200,
"success": true,
"data": [
{
"id": "122555646684684",
"streetName": "胶州市",
"disputeName": "土地纠纷",
"disposeDept": "市住建局",
"hasProtocol": "无协议书",
"hasOpinion": "无处理意见",
"hasReviewOpinion": "无复查意见",
"legalPaper": "无法律文书",
"regTime": "2012-05-15 12:30",
"problemDesc": "矛盾描述...........",
"visitorList": [
{
"id": 1546486176165,
"username": "张三",
"gender": 1,
"age": 32,
"cardno": "3708821548488178",
"address": "洋河镇",
"addressNow": "洋河镇",
"phone": "13564854126"
}
]
}
],
"msg": "操作成功"
"code": 200,
"success": true,
"data": {
"appealId": 1,
"visitors": [
{
"id": "1",
"createUser": -1,
"createDept": -1,
"createTime": "",
"updateUser": -1,
"updateTime": "",
"status": -1,
"isDeleted": 0,
"appealId": 1,
"appealRegId": 1,
"username": "庄培燕",
"gender": "女",
"age": 25,
"cardno": "37234635323451345",
"address": "大相家村",
"addressNow": "",
"phone": "13566457424",
"sort": 1
}
],
"personNum": -1,
"streetId": "1666697016771792897",
"disputeId": "1666697784342007809",
"disputeName": "损害赔偿纠纷",
"disposeDept": "",
"disposeDeptName": "",
"protocol": "无",
"opinion": "无",
"reviewOpinion": "无",
"legalPaper": "无",
"firstRegTime": "2023-03-01 00:00:00",
"problemDesc": "来访者为七旬赵大姨,因为村委长期拖欠农民征用口粮地补偿款前来信访,谈话过程中一度情绪崩溃大哭, 经调解员安抚至情绪缓和后离开咨询室。"
},
"msg": "操作成功"
}
```
@ -341,6 +352,39 @@
| legalPaper | string | N | 法律文书 |
| problemDesc | string | N | 主要问题 |
- 请求示例
```json
{
"appealId": null,
"visitors": [
{
"appealId": 1,
"appealRegId": 1,
"username": "庄培燕",
"gender": "女",
"age": 25,
"cardno": "37234635323451345",
"address": "大相家村",
"addressNow": "",
"phone": "13566457424",
"sort": 1
}
],
"personNum": -1,
"streetId": "1666697016771792897",
"disputeId": "1666697784342007809",
"disputeName": "损害赔偿纠纷",
"disposeDept": "",
"disposeDeptName": "",
"protocol": "无",
"opinion": "无",
"reviewOpinion": "无",
"legalPaper": "无",
"firstRegTime": "2023-03-02 00:00:00",
"problemDesc": "来访者为"
}
```
- 返回示例
```json
{

@ -29,7 +29,6 @@ import org.springblade.modules.business.vo.AppealRegVO;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 控制器
@ -105,7 +104,7 @@ public class AppealRegController extends BladeController {
*/
@GetMapping("/getById")
public R getById(String appealId) {
return null;
return R.data(regService.getById(appealId));
}
/**
@ -113,6 +112,6 @@ public class AppealRegController extends BladeController {
*/
@PostMapping("/save")
public R save(@RequestBody AppealRegVO entity) {
return null;
return R.status(regService.saveReg(entity));
}
}

@ -17,9 +17,12 @@
package org.springblade.modules.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import lombok.RequiredArgsConstructor;
import org.apache.ibatis.annotations.Param;
import org.springblade.modules.business.entity.AppealReg;
import org.springblade.modules.business.vo.AppealListVO;
import java.security.PrivateKey;
import java.util.List;
/**
@ -29,5 +32,18 @@ import java.util.List;
*/
public interface AppealRegMapper extends BaseMapper<AppealReg> {
List<AppealListVO> getList(String appealStatus, String startTime, String endTime, String appealType, String windowId, String username);
List<AppealListVO> getList(@Param("appealStatus") String appealStatus,
@Param("startTime") String startTime,
@Param("endTime") String endTime,
@Param("appealType") String appealType,
@Param("windowId") String windowId,
@Param("username") String username);
/**
* 获取最后一次登记记录
*
* @param appealId
* @return
*/
AppealReg getLastReg(@Param("appealId") String appealId);
}

@ -3,50 +3,56 @@
<mapper namespace="org.springblade.modules.business.mapper.AppealRegMapper">
<select id="getList" resultType="org.springblade.modules.business.vo.AppealListVO">
SELECT a.id, b.username, b.cardno, if(a.dispute_id is null, a.dispute_name, biz.dict_value) as disputeName,
SELECT a.id, b.username, b.cardno, if(a.dispute_id is null, a.dispute_name, biz.dict_value) as disputeName,
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 (
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
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 (
) t2
LEFT JOIN (
/* 找出每次登记的第一张用户 */
SELECT *
FROM mp_appeal_visitor vis
WHERE vis.sort = 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
<if test="appealStatus != null and appealStatus != ''">
and a.status = #{appealStatus}
</if>
<if test="startTime != null and startTime != ''">
and a.first_reg_time &gt; #{startTime}
</if>
<if test="endTime != null and endTime != ''">
and a.first_reg_time &lt; #{endTime}
</if>
<if test="appealType != null and appealType != ''">
and a.dispute_id = #{appealType}
</if>
<if test="windowId != null and windowId != ''">
and a.handle_dept = #{windowId}
</if>
<if test="username != null and username != ''">
and b.username like concat(concat('%', #{username}), '%')
</if>
ORDER BY a.first_reg_time DESC
)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
<if test="appealStatus != null and appealStatus != ''">
and a.status = #{appealStatus}
</if>
<if test="startTime != null and startTime != ''">
and a.first_reg_time &gt; #{startTime}
</if>
<if test="endTime != null and endTime != ''">
and a.first_reg_time &lt; #{endTime}
</if>
<if test="appealType != null and appealType != ''">
and a.dispute_id = #{appealType}
</if>
<if test="windowId != null and windowId != ''">
and a.handle_dept = #{windowId}
</if>
<if test="username != null and username != ''">
and b.username like concat(concat('%', #{username}), '%')
</if>
ORDER BY a.first_reg_time DESC
</select>
<select id="getLastReg" resultType="org.springblade.modules.business.entity.AppealReg">
select *
from mp_appeal_reg
where appeal_id = #{appealId}
</select>
</mapper>

@ -58,5 +58,5 @@ public interface IAppealRegService extends BaseService<AppealReg> {
/**
* 保存
*/
boolean save(AppealRegVO entity);
boolean saveReg(AppealRegVO entity);
}

@ -16,14 +16,24 @@
*/
package org.springblade.modules.business.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.BeanUtil;
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.mapper.AppealMapper;
import org.springblade.modules.business.mapper.AppealRegMapper;
import org.springblade.modules.business.mapper.AppealVisitorMapper;
import org.springblade.modules.business.service.IAppealRegService;
import org.springblade.modules.business.service.IAppealVisitorService;
import org.springblade.modules.business.vo.AppealListVO;
import org.springblade.modules.business.vo.AppealRegVO;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
@ -32,8 +42,13 @@ import java.util.List;
* @author BladeX
*/
@Service
@RequiredArgsConstructor
public class AppealRegServiceImpl extends BaseServiceImpl<AppealRegMapper, AppealReg> implements IAppealRegService {
private final IAppealVisitorService visitorService;
private final AppealMapper appealMapper;
private final AppealVisitorMapper visitorMapper;
@Override
public List<AppealListVO> getList(String appealStatus, String startTime, String endTime, String appealType, String windowId, String username) {
return baseMapper.getList(appealStatus, startTime, endTime, appealType, windowId, username);
@ -41,11 +56,66 @@ public class AppealRegServiceImpl extends BaseServiceImpl<AppealRegMapper, Appea
@Override
public AppealRegVO getById(String appealId) {
return null;
AppealRegVO vo = new AppealRegVO();
// 1 获取诉求对象
Appeal appeal = appealMapper.selectById(appealId);
if (Func.isEmpty(appeal)) {
return vo;
}
// 2. 获取最后一次登记
AppealReg lastReg = baseMapper.getLastReg(appealId);
// 3. 获取诉求的所有来访人员
List<AppealVisitor> visitors = visitorMapper.selectList(
Wrappers.<AppealVisitor>lambdaQuery().eq(AppealVisitor::getAppealId, appealId));
// 4. 组织返回对象数据
vo.setAppealId(Long.valueOf(appealId));
vo.setVisitors(visitors);
vo.setStreetId(appeal.getStreetId());
vo.setDisputeId(appeal.getDisputeId());
vo.setDisputeName(appeal.getDisputeName());
vo.setDisposeDept(lastReg.getDisposeDept());
vo.setDisposeDeptName(lastReg.getDisposeDeptName());
vo.setProtocol(lastReg.getProtocol());
vo.setOpinion(lastReg.getOpinion());
vo.setReviewOpinion(lastReg.getReviewOpinion());
vo.setLegalPaper(lastReg.getLegalPaper());
vo.setFirstRegTime(appeal.getFirstRegTime());
vo.setProblemDesc(appeal.getProblemDesc());
return vo;
}
@Override
public boolean save(AppealRegVO entity) {
return false;
public boolean saveReg(AppealRegVO entity) {
// 解析保存数据, 构建保存对象
Appeal appeal = BeanUtil.copy(entity, Appeal.class);
appeal.setId(entity.getAppealId());
AppealReg reg = BeanUtil.copy(entity, AppealReg.class);
List<AppealVisitor> visitors = entity.getVisitors();
// 1. 先保存appeal
int nums = Func.isEmpty(appeal.getId()) ? appealMapper.insert(appeal) : appealMapper.updateById(appeal);
if (nums <= 0) {
return false;
}
// 2. 将appealId赋值给appealReg, 保存appealReg对象
reg.setId(null);
reg.setPersonNum(visitors.size());
baseMapper.insert(reg);
// 3. 将appealId和appealRegId赋值给来访人员, 保存来访人员
for (int i = 0; i < visitors.size(); i++) {
AppealVisitor visitor = visitors.get(i);
visitor.setId(null);
visitor.setAppealId(appeal.getId());
visitor.setAppealRegId(reg.getId());
visitor.setSort(i);
}
visitorService.saveBatch(visitors);
return true;
}
}

@ -17,9 +17,11 @@
package org.springblade.modules.business.vo;
import lombok.Data;
import org.springblade.modules.business.entity.AppealVisitor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 视图类
@ -32,17 +34,27 @@ public class AppealRegVO implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private Long appealId;
/**
* 来访人名称
* 来访人列表
*/
private String username;
private List<AppealVisitor> visitors;
/**
* 来访人身份证号
* 来访人
*/
private String cardno;
private Integer personNum;
/**
* 所属街道字典id
*/
private Long streetId;
/**
* 纠纷字典id
*/
private Long disputeId;
/**
* 纠纷名称
@ -50,22 +62,42 @@ public class AppealRegVO implements Serializable {
private String disputeName;
/**
* 首次登记时间
* 何单位处理过-单位id
*/
private Date firstRegTime;
private String disposeDept;
/**
* 办结时间
* 何单位处理过-单位名称
*/
private Date finishTime;
private String disposeDeptName;
/**
* 反应问题
* 基层协议
*/
private String problemDesc;
private String protocol;
/**
* 基层处理意见
*/
private String opinion;
/**
* 诉求状态(办理状态) 0:待处理, 1:正在处理, 2:达成协议, 3:调解成功
* 部门复查意见
*/
private int status;
private String reviewOpinion;
/**
* 法律文书
*/
private String legalPaper;
/**
* 首次登记时间
*/
private Date firstRegTime;
/**
* 反应问题
*/
private String problemDesc;
}

Loading…
Cancel
Save