诉求登记代码完成

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 ```json
{ {
"code": 200, "code": 200,
"success": true, "success": true,
"data": [ "data": {
{ "appealId": 1,
"id": "122555646684684", "visitors": [
"streetName": "胶州市", {
"disputeName": "土地纠纷", "id": "1",
"disposeDept": "市住建局", "createUser": -1,
"hasProtocol": "无协议书", "createDept": -1,
"hasOpinion": "无处理意见", "createTime": "",
"hasReviewOpinion": "无复查意见", "updateUser": -1,
"legalPaper": "无法律文书", "updateTime": "",
"regTime": "2012-05-15 12:30", "status": -1,
"problemDesc": "矛盾描述...........", "isDeleted": 0,
"visitorList": [ "appealId": 1,
{ "appealRegId": 1,
"id": 1546486176165, "username": "庄培燕",
"username": "张三", "gender": "女",
"gender": 1, "age": 25,
"age": 32, "cardno": "37234635323451345",
"cardno": "3708821548488178", "address": "大相家村",
"address": "洋河镇", "addressNow": "",
"addressNow": "洋河镇", "phone": "13566457424",
"phone": "13564854126" "sort": 1
} }
] ],
} "personNum": -1,
], "streetId": "1666697016771792897",
"msg": "操作成功" "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 | 法律文书 | | legalPaper | string | N | 法律文书 |
| problemDesc | 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 ```json
{ {

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

@ -17,9 +17,12 @@
package org.springblade.modules.business.mapper; package org.springblade.modules.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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.entity.AppealReg;
import org.springblade.modules.business.vo.AppealListVO; import org.springblade.modules.business.vo.AppealListVO;
import java.security.PrivateKey;
import java.util.List; import java.util.List;
/** /**
@ -29,5 +32,18 @@ import java.util.List;
*/ */
public interface AppealRegMapper extends BaseMapper<AppealReg> { 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"> <mapper namespace="org.springblade.modules.business.mapper.AppealRegMapper">
<select id="getList" resultType="org.springblade.modules.business.vo.AppealListVO"> <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` a.first_reg_time as firstRegTime, a.finish_time as finishTime, a.problem_desc as problemDesc, a.`status`
FROM mp_appeal a FROM mp_appeal a
LEFT JOIN ( LEFT JOIN (
/* 先找出每个诉求的最后一次登记的第一个人 */ /* 先找出每个诉求的最后一次登记的第一个人 */
SELECT t3.* SELECT t3.*
FROM ( FROM (
/* 找出每个诉求的最后一次登记记录 */ /* 找出每个诉求的最后一次登记记录 */
SELECT t.* SELECT t.*
FROM ( FROM (
SELECT *, ROW_NUMBER() OVER(PARTITION BY appeal_id SELECT *, ROW_NUMBER() OVER(PARTITION BY appeal_id
ORDER BY create_time DESC) AS row_index ORDER BY create_time DESC) AS row_index
FROM mp_appeal_reg reg FROM mp_appeal_reg reg
WHERE 1 = 1 WHERE 1 = 1
) t ) t
WHERE t.row_index = 1 WHERE t.row_index = 1
) t2 ) t2
LEFT JOIN ( LEFT JOIN (
/* 找出每次登记的第一张用户 */ /* 找出每次登记的第一张用户 */
SELECT * SELECT *
FROM mp_appeal_visitor vis FROM mp_appeal_visitor vis
WHERE vis.sort = 1 WHERE vis.sort = 1
)t3 ON t2.id = t3.appeal_reg_id )t3 ON t2.id = t3.appeal_reg_id
) b ON a.id = b.appeal_id ) b ON a.id = b.appeal_id
LEFT JOIN blade_dict_biz biz ON a.dispute_id = biz.id LEFT JOIN blade_dict_biz biz ON a.dispute_id = biz.id
WHERE a.source_type = 0 WHERE a.source_type = 0
<if test="appealStatus != null and appealStatus != ''"> <if test="appealStatus != null and appealStatus != ''">
and a.status = #{appealStatus} and a.status = #{appealStatus}
</if> </if>
<if test="startTime != null and startTime != ''"> <if test="startTime != null and startTime != ''">
and a.first_reg_time &gt; #{startTime} and a.first_reg_time &gt; #{startTime}
</if> </if>
<if test="endTime != null and endTime != ''"> <if test="endTime != null and endTime != ''">
and a.first_reg_time &lt; #{endTime} and a.first_reg_time &lt; #{endTime}
</if> </if>
<if test="appealType != null and appealType != ''"> <if test="appealType != null and appealType != ''">
and a.dispute_id = #{appealType} and a.dispute_id = #{appealType}
</if> </if>
<if test="windowId != null and windowId != ''"> <if test="windowId != null and windowId != ''">
and a.handle_dept = #{windowId} and a.handle_dept = #{windowId}
</if> </if>
<if test="username != null and username != ''"> <if test="username != null and username != ''">
and b.username like concat(concat('%', #{username}), '%') and b.username like concat(concat('%', #{username}), '%')
</if> </if>
ORDER BY a.first_reg_time DESC 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> </select>
</mapper> </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; 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.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.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.AppealRegMapper;
import org.springblade.modules.business.mapper.AppealVisitorMapper;
import org.springblade.modules.business.service.IAppealRegService; 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.AppealListVO;
import org.springblade.modules.business.vo.AppealRegVO; import org.springblade.modules.business.vo.AppealRegVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -32,8 +42,13 @@ import java.util.List;
* @author BladeX * @author BladeX
*/ */
@Service @Service
@RequiredArgsConstructor
public class AppealRegServiceImpl extends BaseServiceImpl<AppealRegMapper, AppealReg> implements IAppealRegService { public class AppealRegServiceImpl extends BaseServiceImpl<AppealRegMapper, AppealReg> implements IAppealRegService {
private final IAppealVisitorService visitorService;
private final AppealMapper appealMapper;
private final AppealVisitorMapper visitorMapper;
@Override @Override
public List<AppealListVO> getList(String appealStatus, String startTime, String endTime, String appealType, String windowId, String username) { 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); return baseMapper.getList(appealStatus, startTime, endTime, appealType, windowId, username);
@ -41,11 +56,66 @@ public class AppealRegServiceImpl extends BaseServiceImpl<AppealRegMapper, Appea
@Override @Override
public AppealRegVO getById(String appealId) { 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 @Override
public boolean save(AppealRegVO entity) { public boolean saveReg(AppealRegVO entity) {
return false; // 解析保存数据, 构建保存对象
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; package org.springblade.modules.business.vo;
import lombok.Data; import lombok.Data;
import org.springblade.modules.business.entity.AppealVisitor;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 视图类 * 视图类
@ -32,17 +34,27 @@ public class AppealRegVO implements Serializable {
private static final long serialVersionUID = 1L; 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; 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