package com.java110.fee.api.z2;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.java110.dto.importData.HouseMailRecord;
|
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;
|
|
/**
|
* 房屋邮寄记录信息接口
|
* 适配 house_mail_record 表
|
* @author dev
|
* @date 2025-12-24
|
*/
|
@RestController
|
@RequestMapping(value = "/houseMailRecord")
|
public class HouseMailRecordApi {
|
|
@Autowired
|
protected SqlSessionTemplate sqlSessionTemplate;
|
|
/**
|
* 保存单条房屋邮寄记录信息
|
*
|
* @param reqJson 请求参数
|
* @return 响应结果
|
* @serviceCode /houseMailRecord/saveHouseMailRecordInfo
|
* @path /app/houseMailRecord/saveHouseMailRecordInfo
|
*/
|
@RequestMapping(value = "/saveHouseMailRecord", method = RequestMethod.POST)
|
public ResponseEntity<String> saveHouseMailRecordInfo(@RequestBody JSONObject reqJson) {
|
// 核心参数校验
|
Assert.hasKeyAndValue(reqJson, "ownerId", "请求报文中未包含业主编号ownerId");
|
Assert.hasKeyAndValue(reqJson, "houseId", "请求报文中未包含房屋编号houseId");
|
Assert.hasKeyAndValue(reqJson, "sendDate", "请求报文中未包含寄出日期sendDate");
|
|
// 转换为实体类
|
HouseMailRecord record = BeanConvertUtil.covertBean(reqJson, HouseMailRecord.class);
|
|
// 调用Mapper保存方法
|
int insert = sqlSessionTemplate.insert("houseMailRecordServiceDaoImpl.saveHouseMailRecordInfo",
|
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 请求参数(包含houseMailRecordList数组)
|
* @return 响应结果
|
* @serviceCode /houseMailRecord/saveHouseMailRecords
|
* @path /app/houseMailRecord/saveHouseMailRecords
|
*/
|
@RequestMapping(value = "/saveHouseMailRecords", method = RequestMethod.POST)
|
public ResponseEntity<String> saveHouseMailRecords(@RequestBody JSONObject reqJson) {
|
Assert.hasKeyAndValue(reqJson, "houseMailRecordList", "请求报文中未包含批量数据列表houseMailRecordList");
|
|
// 转换批量数据
|
List<HouseMailRecord> recordList = BeanConvertUtil.covertBeanList(
|
reqJson.getJSONArray("houseMailRecordList"), HouseMailRecord.class);
|
|
Map<String, Object> param = new HashMap<>();
|
param.put("houseMailRecordPos", recordList);
|
|
// 批量插入
|
int insert = sqlSessionTemplate.insert("houseMailRecordServiceDaoImpl.saveHouseMailRecords", 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 /houseMailRecord/updateHouseMailRecordInfo
|
* @path /app/houseMailRecord/updateHouseMailRecordInfo
|
*/
|
@RequestMapping(value = "/updateHouseMailRecordInfo", method = RequestMethod.POST)
|
public ResponseEntity<String> updateHouseMailRecordInfo(@RequestBody JSONObject reqJson) {
|
// 主键校验(id 或 ownerId+houseId 二选一)
|
boolean hasId = reqJson.containsKey("id") && reqJson.getString("id") != null && !reqJson.getString("id").isEmpty();
|
boolean hasOwnerAndHouseId = reqJson.containsKey("ownerId") && !reqJson.getString("ownerId").isEmpty()
|
&& reqJson.containsKey("houseId") && !reqJson.getString("houseId").isEmpty();
|
Assert.isTrue(hasId || hasOwnerAndHouseId, "请求报文中需包含主键ID,或同时包含业主编号和房屋编号");
|
|
// 转换为实体类
|
HouseMailRecord record = BeanConvertUtil.covertBean(reqJson, HouseMailRecord.class);
|
|
// 调用Mapper修改方法
|
int update = sqlSessionTemplate.update("houseMailRecordServiceDaoImpl.updateHouseMailRecordInfo",
|
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 /houseMailRecord/deleteHouseMailRecordInfo
|
* @path /app/houseMailRecord/deleteHouseMailRecordInfo
|
*/
|
@RequestMapping(value = "/deleteHouseMailRecordInfo", method = RequestMethod.POST)
|
public ResponseEntity<String> deleteHouseMailRecordInfo(@RequestBody JSONObject reqJson) {
|
// 必要参数校验(至少包含一个筛选条件)
|
boolean hasFilter = reqJson.containsKey("id") && reqJson.getString("id") != null && !reqJson.getString("id").isEmpty()
|
|| reqJson.containsKey("ownerId") && !reqJson.getString("ownerId").isEmpty()
|
|| reqJson.containsKey("houseId") && !reqJson.getString("houseId").isEmpty();
|
Assert.isTrue(hasFilter, "请求报文中需包含id/ownerId/houseId至少一个筛选条件");
|
|
// 转换为实体类
|
HouseMailRecord record = BeanConvertUtil.covertBean(reqJson, HouseMailRecord.class);
|
|
// 调用Mapper删除方法
|
int delete = sqlSessionTemplate.delete("houseMailRecordServiceDaoImpl.deleteHouseMailRecordInfo",
|
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 ownerId 业主编号(可选)
|
* @param houseId 房屋编号(可选)
|
* @param sendDate 寄出日期(可选)
|
* @param mailNo 邮寄单号(可选)
|
* @param mailResult 邮寄结果(可选)
|
* @param startSendDate 寄出日期开始范围(可选)
|
* @param endSendDate 寄出日期结束范围(可选)
|
* @return 响应结果
|
* @serviceCode /houseMailRecord/queryHouseMailRecordInfo
|
* @path /app/houseMailRecord/queryHouseMailRecordInfo
|
*/
|
@RequestMapping(value = "/queryHouseMailRecordInfo", method = RequestMethod.GET)
|
public ResponseEntity<String> queryHouseMailRecordInfo(
|
@RequestParam(value = "page", defaultValue = "1") int page,
|
@RequestParam(value = "row", defaultValue = "10") int row,
|
@RequestParam(value = "id", required = false) String id,
|
@RequestParam(value = "ownerId", required = false) String ownerId,
|
@RequestParam(value = "houseId", required = false) String houseId,
|
@RequestParam(value = "sendDate", required = false) String sendDate,
|
@RequestParam(value = "mailNo", required = false) String mailNo,
|
@RequestParam(value = "mailResult", required = false) String mailResult,
|
@RequestParam(value = "startSendDate", required = false) String startSendDate,
|
@RequestParam(value = "endSendDate", required = false) String endSendDate) {
|
|
// 封装查询参数
|
Map<String, Object> param = new HashMap<>();
|
param.put("page", (page - 1) * row); // 转换为MySQL分页偏移量
|
param.put("row", row);
|
param.put("id", id);
|
param.put("ownerId", ownerId);
|
param.put("houseId", houseId);
|
param.put("sendDate", sendDate);
|
param.put("mailNo", mailNo);
|
param.put("mailResult", mailResult);
|
param.put("startSendDate", startSendDate);
|
param.put("endSendDate", endSendDate);
|
|
// 查询列表数据
|
List<Map<String, Object>> list = sqlSessionTemplate.selectList(
|
"houseMailRecordServiceDaoImpl.getHouseMailRecordInfo", param);
|
|
// 查询总数
|
Map<String, Object> countMap = sqlSessionTemplate.selectOne(
|
"houseMailRecordServiceDaoImpl.queryHouseMailRecordsCount", 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, HouseMailRecord.class));
|
|
return ResponseEntity.ok(resJson.toJSONString());
|
}
|
|
/**
|
* 查询房屋邮寄记录统计信息
|
*
|
* @param ownerId 业主编号(可选)
|
* @param houseId 房屋编号(可选)
|
* @param startSendDate 寄出日期开始范围(可选)
|
* @param endSendDate 寄出日期结束范围(可选)
|
* @return 响应结果
|
* @serviceCode /houseMailRecord/queryHouseMailRecordStatistics
|
* @path /app/houseMailRecord/queryHouseMailRecordStatistics
|
*/
|
@RequestMapping(value = "/queryHouseMailRecordStatistics", method = RequestMethod.GET)
|
public ResponseEntity<String> queryHouseMailRecordStatistics(
|
@RequestParam(value = "ownerId", required = false) String ownerId,
|
@RequestParam(value = "houseId", required = false) String houseId,
|
@RequestParam(value = "startSendDate", required = false) String startSendDate,
|
@RequestParam(value = "endSendDate", required = false) String endSendDate) {
|
|
// 封装查询参数
|
Map<String, Object> param = new HashMap<>();
|
param.put("ownerId", ownerId);
|
param.put("houseId", houseId);
|
param.put("startSendDate", startSendDate);
|
param.put("endSendDate", endSendDate);
|
|
// 统计查询
|
Map<String, Object> statistics = sqlSessionTemplate.selectOne(
|
"houseMailRecordServiceDaoImpl.queryHouseMailRecordStatistics", param);
|
|
JSONObject resJson = new JSONObject();
|
resJson.put("code", "0000");
|
resJson.put("msg", "统计房屋邮寄记录信息成功");
|
resJson.put("data", statistics);
|
|
return ResponseEntity.ok(resJson.toJSONString());
|
}
|
|
/**
|
* 按邮寄结果分组统计房屋邮寄记录
|
*
|
* @param ownerId 业主编号(可选)
|
* @param houseId 房屋编号(可选)
|
* @param startSendDate 寄出日期开始范围(可选)
|
* @param endSendDate 寄出日期结束范围(可选)
|
* @return 响应结果
|
* @serviceCode /houseMailRecord/queryHouseMailRecordByMailResult
|
* @path /app/houseMailRecord/queryHouseMailRecordByMailResult
|
*/
|
@RequestMapping(value = "/queryHouseMailRecordByMailResult", method = RequestMethod.GET)
|
public ResponseEntity<String> queryHouseMailRecordByMailResult(
|
@RequestParam(value = "ownerId", required = false) String ownerId,
|
@RequestParam(value = "houseId", required = false) String houseId,
|
@RequestParam(value = "startSendDate", required = false) String startSendDate,
|
@RequestParam(value = "endSendDate", required = false) String endSendDate) {
|
|
// 封装查询参数
|
Map<String, Object> param = new HashMap<>();
|
param.put("ownerId", ownerId);
|
param.put("houseId", houseId);
|
param.put("startSendDate", startSendDate);
|
param.put("endSendDate", endSendDate);
|
|
// 分组统计查询
|
List<Map<String, Object>> resultList = sqlSessionTemplate.selectList(
|
"houseMailRecordServiceDaoImpl.queryHouseMailRecordByMailResult", param);
|
|
JSONObject resJson = new JSONObject();
|
resJson.put("code", "0000");
|
resJson.put("msg", "按邮寄结果分组统计房屋邮寄记录成功");
|
resJson.put("data", resultList);
|
|
return ResponseEntity.ok(resJson.toJSONString());
|
}
|
|
/**
|
* 按年月维度统计邮寄费用
|
*
|
* @param startSendDate 寄出日期开始范围(可选)
|
* @param endSendDate 寄出日期结束范围(可选)
|
* @return 响应结果
|
* @serviceCode /houseMailRecord/queryHouseMailRecordByMonth
|
* @path /app/houseMailRecord/queryHouseMailRecordByMonth
|
*/
|
@RequestMapping(value = "/queryHouseMailRecordByMonth", method = RequestMethod.GET)
|
public ResponseEntity<String> queryHouseMailRecordByMonth(
|
@RequestParam(value = "startSendDate", required = false) String startSendDate,
|
@RequestParam(value = "endSendDate", required = false) String endSendDate) {
|
|
// 封装查询参数
|
Map<String, Object> param = new HashMap<>();
|
param.put("startSendDate", startSendDate);
|
param.put("endSendDate", endSendDate);
|
|
// 按年月统计查询
|
List<Map<String, Object>> resultList = sqlSessionTemplate.selectList(
|
"houseMailRecordServiceDaoImpl.queryHouseMailRecordByMonth", param);
|
|
JSONObject resJson = new JSONObject();
|
resJson.put("code", "0000");
|
resJson.put("msg", "按年月维度统计邮寄费用成功");
|
resJson.put("data", resultList);
|
|
return ResponseEntity.ok(resJson.toJSONString());
|
}
|
|
/**
|
* 查询未完成邮寄的记录(待寄出/结果为空)
|
*
|
* @param page 页码(默认1)
|
* @param row 每页条数(默认10)
|
* @param ownerId 业主编号(可选)
|
* @param houseId 房屋编号(可选)
|
* @param startSendDate 寄出日期开始范围(可选)
|
* @param endSendDate 寄出日期结束范围(可选)
|
* @return 响应结果
|
* @serviceCode /houseMailRecord/queryUnfinishedMailRecords
|
* @path /app/houseMailRecord/queryUnfinishedMailRecords
|
*/
|
@RequestMapping(value = "/queryUnfinishedMailRecords", method = RequestMethod.GET)
|
public ResponseEntity<String> queryUnfinishedMailRecords(
|
@RequestParam(value = "page", defaultValue = "1") int page,
|
@RequestParam(value = "row", defaultValue = "10") int row,
|
@RequestParam(value = "ownerId", required = false) String ownerId,
|
@RequestParam(value = "houseId", required = false) String houseId,
|
@RequestParam(value = "startSendDate", required = false) String startSendDate,
|
@RequestParam(value = "endSendDate", required = false) String endSendDate) {
|
|
// 封装查询参数
|
Map<String, Object> param = new HashMap<>();
|
param.put("page", (page - 1) * row);
|
param.put("row", row);
|
param.put("ownerId", ownerId);
|
param.put("houseId", houseId);
|
param.put("startSendDate", startSendDate);
|
param.put("endSendDate", endSendDate);
|
|
// 查询未完成记录
|
List<Map<String, Object>> list = sqlSessionTemplate.selectList(
|
"houseMailRecordServiceDaoImpl.queryUnfinishedMailRecords", param);
|
|
JSONObject resJson = new JSONObject();
|
resJson.put("code", "0000");
|
resJson.put("msg", "查询未完成邮寄记录成功");
|
resJson.put("page", page);
|
resJson.put("row", row);
|
resJson.put("total", list.size()); // 如需精准总数可新增count方法,此处简化
|
resJson.put("data", list);
|
|
return ResponseEntity.ok(resJson.toJSONString());
|
}
|
}
|