package com.java110.fee.api.z2;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.java110.dto.importData.MailCallRecord;
|
import com.java110.utils.util.Assert;
|
import com.java110.utils.util.BeanConvertUtil;
|
import org.mybatis.spring.SqlSessionTemplate;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.http.ResponseEntity;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 邮寄信电联记录信息接口
|
* 适配 mail_call_record 表
|
* @author dev
|
* @date 2025-12-24
|
*/
|
@RestController
|
@RequestMapping(value = "/mailCallRecord")
|
public class MailCallRecordApi {
|
|
@Autowired
|
protected SqlSessionTemplate sqlSessionTemplate;
|
|
/**
|
* 保存单条邮寄信电联记录信息
|
*
|
* @param reqJson 请求参数
|
* @return 响应结果
|
* @serviceCode /mailCallRecord/saveMailCallRecord
|
* @path /app/mailCallRecord/saveMailCallRecord
|
*/
|
@RequestMapping(value = "/saveMailCallRecord", method = RequestMethod.POST)
|
public ResponseEntity<String> saveMailCallRecord(@RequestBody JSONObject reqJson) {
|
// 核心参数校验
|
Assert.hasKeyAndValue(reqJson, "mailId", "请求报文中未包含邮寄信编号mailId");
|
Assert.hasKeyAndValue(reqJson, "callDate", "请求报文中未包含电联日期callDate");
|
Assert.hasKeyAndValue(reqJson, "callContact", "请求报文中未包含被电联联系人callContact");
|
|
// 转换为实体类
|
MailCallRecord record = BeanConvertUtil.covertBean(reqJson, MailCallRecord.class);
|
|
// 调用Mapper保存方法
|
int insert = sqlSessionTemplate.insert("mailCallRecordServiceDaoImpl.saveMailCallRecord",
|
BeanConvertUtil.beanCovertMap(record));
|
|
// 构造响应结果
|
JSONObject resJson = new JSONObject();
|
if (insert > 0) {
|
resJson.put("code", "0000");
|
resJson.put("msg", "保存邮寄信电联记录信息成功");
|
} else {
|
resJson.put("code", "0001");
|
resJson.put("msg", "保存邮寄信电联记录信息失败");
|
}
|
resJson.put("count", insert);
|
return ResponseEntity.ok(resJson.toJSONString());
|
}
|
|
/**
|
* 批量保存邮寄信电联记录信息
|
*
|
* @param reqJson 请求参数(包含mailCallRecordList数组)
|
* @return 响应结果
|
* @serviceCode /mailCallRecord/batchSaveMailCallRecord
|
* @path /app/mailCallRecord/batchSaveMailCallRecord
|
*/
|
@RequestMapping(value = "/batchSaveMailCallRecord", method = RequestMethod.POST)
|
public ResponseEntity<String> batchSaveMailCallRecord(@RequestBody JSONObject reqJson) {
|
Assert.hasKeyAndValue(reqJson, "mailCallRecordList", "请求报文中未包含批量数据列表mailCallRecordList");
|
|
// 转换批量数据
|
List<MailCallRecord> recordList = BeanConvertUtil.covertBeanList(
|
reqJson.getJSONArray("mailCallRecordList"), MailCallRecord.class);
|
|
Map<String, Object> param = new HashMap<>();
|
param.put("mailCallRecordList", recordList);
|
|
// 批量插入
|
int insert = sqlSessionTemplate.insert("mailCallRecordServiceDaoImpl.batchSaveMailCallRecord", param);
|
|
JSONObject resJson = new JSONObject();
|
resJson.put("code", "0000");
|
resJson.put("msg", "批量保存邮寄信电联记录信息成功");
|
resJson.put("count", insert);
|
return ResponseEntity.ok(resJson.toJSONString());
|
}
|
|
/**
|
* 修改邮寄信电联记录信息
|
*
|
* @param reqJson 请求参数
|
* @return 响应结果
|
* @serviceCode /mailCallRecord/updateMailCallRecord
|
* @path /app/mailCallRecord/updateMailCallRecord
|
*/
|
@RequestMapping(value = "/updateMailCallRecord", method = RequestMethod.POST)
|
public ResponseEntity<String> updateMailCallRecord(@RequestBody JSONObject reqJson) {
|
// 主键校验(id 或 mailId 二选一)
|
boolean hasId = reqJson.containsKey("id") && reqJson.getString("id") != null && !reqJson.getString("id").isEmpty();
|
boolean hasMailId = reqJson.containsKey("mailId") && !reqJson.getString("mailId").isEmpty();
|
Assert.isTrue(hasId || hasMailId, "请求报文中需包含主键ID,或包含邮寄信编号mailId");
|
|
// 转换为实体类
|
MailCallRecord record = BeanConvertUtil.covertBean(reqJson, MailCallRecord.class);
|
|
// 调用Mapper修改方法
|
int update = sqlSessionTemplate.update("mailCallRecordServiceDaoImpl.updateMailCallRecord",
|
BeanConvertUtil.beanCovertMap(record));
|
|
JSONObject resJson = new JSONObject();
|
if (update > 0) {
|
resJson.put("code", "0000");
|
resJson.put("msg", "修改邮寄信电联记录信息成功");
|
} else {
|
resJson.put("code", "0001");
|
resJson.put("msg", "修改邮寄信电联记录信息失败,未找到对应记录");
|
}
|
resJson.put("count", update);
|
return ResponseEntity.ok(resJson.toJSONString());
|
}
|
|
/**
|
* 删除邮寄信电联记录信息
|
*
|
* @param reqJson 请求参数
|
* @return 响应结果
|
* @serviceCode /mailCallRecord/deleteMailCallRecord
|
* @path /app/mailCallRecord/deleteMailCallRecord
|
*/
|
@RequestMapping(value = "/deleteMailCallRecord", method = RequestMethod.POST)
|
public ResponseEntity<String> deleteMailCallRecord(@RequestBody JSONObject reqJson) {
|
// 必要参数校验(至少包含一个筛选条件)
|
boolean hasFilter = reqJson.containsKey("id") && reqJson.getString("id") != null && !reqJson.getString("id").isEmpty()
|
|| reqJson.containsKey("mailId") && !reqJson.getString("mailId").isEmpty()
|
|| reqJson.containsKey("callResult") && !reqJson.getString("callResult").isEmpty();
|
Assert.isTrue(hasFilter, "请求报文中需包含id/mailId/callResult至少一个筛选条件");
|
|
// 转换为实体类
|
MailCallRecord record = BeanConvertUtil.covertBean(reqJson, MailCallRecord.class);
|
|
// 调用Mapper删除方法
|
int delete = sqlSessionTemplate.delete("mailCallRecordServiceDaoImpl.deleteMailCallRecord",
|
BeanConvertUtil.beanCovertMap(record));
|
|
JSONObject resJson = new JSONObject();
|
if (delete > 0) {
|
resJson.put("code", "0000");
|
resJson.put("msg", "删除邮寄信电联记录信息成功");
|
} else {
|
resJson.put("code", "0001");
|
resJson.put("msg", "删除邮寄信电联记录信息失败,未找到对应记录");
|
}
|
resJson.put("count", delete);
|
return ResponseEntity.ok(resJson.toJSONString());
|
}
|
|
/**
|
* 分页查询邮寄信电联记录信息列表
|
*
|
* @param page 页码(默认1)
|
* @param row 每页条数(默认10)
|
* @param id 主键ID(可选)
|
* @param mailId 邮寄信编号(可选)
|
* @param callDate 电联日期(可选)
|
* @param callResult 电联结果(可选)
|
* @param callContact 被电联联系人(可选)
|
* @param caller 电联执行人员(可选)
|
* @param startCreateTime 创建时间开始范围(可选)
|
* @param endCreateTime 创建时间结束范围(可选)
|
* @param startUpdateTime 更新时间开始范围(可选)
|
* @param endUpdateTime 更新时间结束范围(可选)
|
* @return 响应结果
|
* @serviceCode /mailCallRecord/getMailCallRecord
|
* @path /app/mailCallRecord/getMailCallRecord
|
*/
|
@RequestMapping(value = "/getMailCallRecord", method = RequestMethod.GET)
|
public ResponseEntity<String> getMailCallRecord(
|
@RequestParam(value = "page", defaultValue = "1") int page,
|
@RequestParam(value = "row", defaultValue = "10") int row,
|
@RequestParam(value = "id", required = false) String id,
|
@RequestParam(value = "mailId", required = false) String mailId,
|
@RequestParam(value = "callDate", required = false) String callDate,
|
@RequestParam(value = "callResult", required = false) String callResult,
|
@RequestParam(value = "callContact", required = false) String callContact,
|
@RequestParam(value = "caller", required = false) String caller,
|
@RequestParam(value = "startCreateTime", required = false) String startCreateTime,
|
@RequestParam(value = "endCreateTime", required = false) String endCreateTime,
|
@RequestParam(value = "startUpdateTime", required = false) String startUpdateTime,
|
@RequestParam(value = "endUpdateTime", required = false) String endUpdateTime) {
|
|
// 封装查询参数
|
Map<String, Object> param = new HashMap<>();
|
param.put("page", (page - 1) * row); // 转换为MySQL分页偏移量
|
param.put("row", row);
|
param.put("id", id);
|
param.put("mailId", mailId);
|
param.put("callDate", callDate);
|
param.put("callResult", callResult);
|
param.put("callContact", callContact);
|
param.put("caller", caller);
|
param.put("startCreateTime", startCreateTime);
|
param.put("endCreateTime", endCreateTime);
|
param.put("startUpdateTime", startUpdateTime);
|
param.put("endUpdateTime", endUpdateTime);
|
|
// 查询列表数据
|
List<Map<String, Object>> list = sqlSessionTemplate.selectList(
|
"mailCallRecordServiceDaoImpl.getMailCallRecord", param);
|
|
// 查询总数
|
Map<String, Object> countMap = sqlSessionTemplate.selectOne(
|
"mailCallRecordServiceDaoImpl.queryMailCallRecordCount", param);
|
int total = countMap != null ? Integer.parseInt(countMap.get("count").toString()) : 0;
|
|
// 构造分页响应
|
JSONObject resJson = new JSONObject();
|
resJson.put("code", "0000");
|
resJson.put("msg", "查询邮寄信电联记录信息成功");
|
resJson.put("page", page);
|
resJson.put("row", row);
|
resJson.put("total", total);
|
resJson.put("data", BeanConvertUtil.covertBeanList(list, MailCallRecord.class));
|
|
return ResponseEntity.ok(resJson.toJSONString());
|
}
|
|
/**
|
* 查询邮寄信电联记录统计信息
|
*
|
* @param mailId 邮寄信编号(可选)
|
* @param callResult 电联结果(可选)
|
* @param startCreateTime 创建时间开始范围(可选)
|
* @param endCreateTime 创建时间结束范围(可选)
|
* @return 响应结果
|
* @serviceCode /mailCallRecord/queryMailCallRecordStatistics
|
* @path /app/mailCallRecord/queryMailCallRecordStatistics
|
*/
|
@RequestMapping(value = "/queryMailCallRecordStatistics", method = RequestMethod.GET)
|
public ResponseEntity<String> queryMailCallRecordStatistics(
|
@RequestParam(value = "mailId", required = false) String mailId,
|
@RequestParam(value = "callResult", required = false) String callResult,
|
@RequestParam(value = "startCreateTime", required = false) String startCreateTime,
|
@RequestParam(value = "endCreateTime", required = false) String endCreateTime) {
|
|
// 封装查询参数
|
Map<String, Object> param = new HashMap<>();
|
param.put("mailId", mailId);
|
param.put("callResult", callResult);
|
param.put("startCreateTime", startCreateTime);
|
param.put("endCreateTime", endCreateTime);
|
|
// 统计查询
|
Map<String, Object> statistics = sqlSessionTemplate.selectOne(
|
"mailCallRecordServiceDaoImpl.queryMailCallRecordStatistics", param);
|
|
JSONObject resJson = new JSONObject();
|
resJson.put("code", "0000");
|
resJson.put("msg", "统计邮寄信电联记录信息成功");
|
resJson.put("data", statistics);
|
|
return ResponseEntity.ok(resJson.toJSONString());
|
}
|
|
/**
|
* 按年月分组统计邮寄信电联记录数量
|
*
|
* @param mailId 邮寄信编号(可选)
|
* @param callResult 电联结果(可选)
|
* @param startCreateTime 创建时间开始范围(可选)
|
* @param endCreateTime 创建时间结束范围(可选)
|
* @return 响应结果
|
* @serviceCode /mailCallRecord/queryMailCallRecordByMonth
|
* @path /app/mailCallRecord/queryMailCallRecordByMonth
|
*/
|
@RequestMapping(value = "/queryMailCallRecordByMonth", method = RequestMethod.GET)
|
public ResponseEntity<String> queryMailCallRecordByMonth(
|
@RequestParam(value = "mailId", required = false) String mailId,
|
@RequestParam(value = "callResult", required = false) String callResult,
|
@RequestParam(value = "startCreateTime", required = false) String startCreateTime,
|
@RequestParam(value = "endCreateTime", required = false) String endCreateTime) {
|
|
// 封装查询参数
|
Map<String, Object> param = new HashMap<>();
|
param.put("mailId", mailId);
|
param.put("callResult", callResult);
|
param.put("startCreateTime", startCreateTime);
|
param.put("endCreateTime", endCreateTime);
|
|
// 按年月统计查询
|
List<Map<String, Object>> resultList = sqlSessionTemplate.selectList(
|
"mailCallRecordServiceDaoImpl.queryMailCallRecordByMonth", param);
|
|
JSONObject resJson = new JSONObject();
|
resJson.put("code", "0000");
|
resJson.put("msg", "按年月分组统计邮寄信电联记录数量成功");
|
resJson.put("data", resultList);
|
|
return ResponseEntity.ok(resJson.toJSONString());
|
}
|
|
/**
|
* 根据mail_id查询最新的邮寄信电联记录信息
|
*
|
* @param mailId 邮寄信编号(必选)
|
* @return 响应结果
|
* @serviceCode /mailCallRecord/getLatestMailCallRecordByMailId
|
* @path /app/mailCallRecord/getLatestMailCallRecordByMailId
|
*/
|
@RequestMapping(value = "/getLatestMailCallRecordByMailId", method = RequestMethod.GET)
|
public ResponseEntity<String> getLatestMailCallRecordByMailId(
|
@RequestParam(value = "mailId") String mailId) {
|
|
// 参数校验
|
Assert.hasLength(mailId, "邮寄信编号mailId不能为空");
|
|
// 封装查询参数
|
Map<String, Object> param = new HashMap<>();
|
param.put("mailId", mailId);
|
|
// 查询最新记录
|
Map<String, Object> recordMap = sqlSessionTemplate.selectOne(
|
"mailCallRecordServiceDaoImpl.getLatestMailCallRecordByMailId", param);
|
MailCallRecord record = null;
|
if (recordMap != null) {
|
record = BeanConvertUtil.covertBean(recordMap, MailCallRecord.class);
|
}
|
|
JSONObject resJson = new JSONObject();
|
resJson.put("code", "0000");
|
resJson.put("msg", "查询最新邮寄信电联记录信息成功");
|
resJson.put("data", record);
|
|
return ResponseEntity.ok(resJson.toJSONString());
|
}
|
}
|