package com.java110.fee.api; import com.alibaba.fastjson.JSONObject; 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; /** * 对方收款单位接口 * 适配 payee_receiveInfo 表 * @author dev * @date 2025-12-24 */ @RestController @RequestMapping(value = "/payeeReceiveInfo") public class PayeeReceiveInfoApi { @Autowired protected SqlSessionTemplate sqlSessionTemplate; /** * 保存对方收款单位信息 * * @param reqJson 请求参数 * @return 响应结果 * @serviceCode /payeeReceiveInfo/savePayeeReceiveInfo * @path /app/payeeReceiveInfo/savePayeeReceiveInfo */ @RequestMapping(value = "/savePayeeReceiveInfo", method = RequestMethod.POST) public ResponseEntity savePayeeReceiveInfo(@RequestBody JSONObject reqJson) { // 核心参数校验(可根据业务补充必传校验) Assert.hasKeyAndValue(reqJson, "ownerId", "请求报文中未包含业主编号ownerId"); // 转换为POJO PayeeReceiveInfoPo po = BeanConvertUtil.covertBean(reqJson, PayeeReceiveInfoPo.class); // 调用Mapper保存方法 int insert = sqlSessionTemplate.insert("payeeReceiveInfoServiceDaoImpl.savePayeeReceiveInfo", BeanConvertUtil.beanCovertMap(po)); // 构造响应结果 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()); } public ResponseEntity savePayeeReceiveInfo(PayeeReceiveInfoPo po) { // 调用Mapper保存方法 int insert = sqlSessionTemplate.insert("payeeReceiveInfoServiceDaoImpl.savePayeeReceiveInfo", BeanConvertUtil.beanCovertMap(po)); // 构造响应结果 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 请求参数(包含payeeReceiveInfoList数组) * @return 响应结果 * @serviceCode /payeeReceiveInfo/savePayeeReceiveInfos * @path /app/payeeReceiveInfo/savePayeeReceiveInfos */ @RequestMapping(value = "/savePayeeReceiveInfos", method = RequestMethod.POST) public ResponseEntity savePayeeReceiveInfos(@RequestBody JSONObject reqJson) { Assert.hasKeyAndValue(reqJson, "payeeReceiveInfoList", "请求报文中未包含批量数据列表"); // 转换批量数据 List poList = BeanConvertUtil.covertBeanList( reqJson.getJSONArray("payeeReceiveInfoList"), PayeeReceiveInfoPo.class); Map param = BeanConvertUtil.beanCovertMap(reqJson); param.put("payeeReceiveInfoList", poList); // 批量插入 int insert = sqlSessionTemplate.insert("payeeReceiveInfoServiceDaoImpl.batchSavePayeeReceiveInfo", 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 /payeeReceiveInfo/updatePayeeReceiveInfo * @path /app/payeeReceiveInfo/updatePayeeReceiveInfo */ @RequestMapping(value = "/updatePayeeReceiveInfo", method = RequestMethod.POST) public ResponseEntity updatePayeeReceiveInfo(@RequestBody JSONObject reqJson) { // 主键校验 Assert.hasKeyAndValue(reqJson, "id", "请求报文中未包含主键ID"); PayeeReceiveInfoPo po = BeanConvertUtil.covertBean(reqJson, PayeeReceiveInfoPo.class); // 调用Mapper修改方法 int update = sqlSessionTemplate.update("payeeReceiveInfoServiceDaoImpl.updatePayeeReceiveInfo", BeanConvertUtil.beanCovertMap(po)); 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 /payeeReceiveInfo/deletePayeeReceiveInfo * @path /app/payeeReceiveInfo/deletePayeeReceiveInfo */ @RequestMapping(value = "/deletePayeeReceiveInfo", method = RequestMethod.POST) public ResponseEntity deletePayeeReceiveInfo(@RequestBody JSONObject reqJson) { // 必要参数校验 Assert.hasKeyAndValue(reqJson, "id", "主键ID不能为空"); PayeeReceiveInfoPo po = BeanConvertUtil.covertBean(reqJson, PayeeReceiveInfoPo.class); // 调用Mapper删除方法 int delete = sqlSessionTemplate.delete("payeeReceiveInfoServiceDaoImpl.deletePayeeReceiveInfo", BeanConvertUtil.beanCovertMap(po)); 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 ownerId 业主编号(必传) * @param page 页码(默认1) * @param row 每页条数(默认10) * @param id 主键ID(可选) * @param roomId 房屋Id(可选) * @return 响应结果 * @serviceCode /payeeReceiveInfo/queryPayeeReceiveInfo * @path /app/payeeReceiveInfo/queryPayeeReceiveInfo */ @RequestMapping(value = "/queryPayeeReceiveInfo", method = RequestMethod.GET) public ResponseEntity queryPayeeReceiveInfo( @RequestParam(value = "ownerId") String ownerId, @RequestParam(value = "page", defaultValue = "1") int page, @RequestParam(value = "row", defaultValue = "10") int row, @RequestParam(value = "id", required = false) String id, @RequestParam(value = "roomId", required = false) String roomId) { // 封装查询参数 PayeeReceiveInfoPo queryPo = new PayeeReceiveInfoPo(); queryPo.setOwnerId(ownerId); queryPo.setPage((page - 1) * row); // 转换为MySQL分页偏移量 queryPo.setRow(row); if (id != null && !id.isEmpty()) { queryPo.setId(Integer.parseInt(id)); } if (roomId != null && !roomId.isEmpty()) { queryPo.setRoomId(roomId); } // 查询列表数据 List> list = sqlSessionTemplate.selectList( "payeeReceiveInfoServiceDaoImpl.getPayeeReceiveInfo", BeanConvertUtil.beanCovertMap(queryPo)); // 查询总数 Object total = ((HashMap) sqlSessionTemplate.selectOne( "payeeReceiveInfoServiceDaoImpl.queryPayeeReceiveInfoCount", BeanConvertUtil.beanCovertMap(queryPo))).get("count"); // 构造分页响应 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", list); return ResponseEntity.ok(resJson.toJSONString()); } /** * 根据ID查询单条对方收款单位信息 * * @param id 主键ID * @return 响应结果 * @serviceCode /payeeReceiveInfo/getPayeeReceiveInfoById * @path /app/payeeReceiveInfo/getPayeeReceiveInfoById */ @RequestMapping(value = "/getPayeeReceiveInfoById", method = RequestMethod.GET) public ResponseEntity getPayeeReceiveInfoById(@RequestParam(value = "id") Integer id) { // 主键校验 Assert.notNull(id, "主键ID不能为空"); PayeeReceiveInfoPo queryPo = new PayeeReceiveInfoPo(); queryPo.setId(id); // 查询单条数据 Map result = sqlSessionTemplate.selectOne( "payeeReceiveInfoServiceDaoImpl.getPayeeReceiveInfo", BeanConvertUtil.beanCovertMap(queryPo)); JSONObject resJson = new JSONObject(); if (result != null) { resJson.put("code", "0000"); resJson.put("msg", "查询对方收款单位信息成功"); resJson.put("data", result); } else { resJson.put("code", "0001"); resJson.put("msg", "未找到对应对方收款单位记录"); } return ResponseEntity.ok(resJson.toJSONString()); } /** * 根据ownerId查询对方收款单位信息 * * @param ownerId 业主编号 * @return 响应结果 * @serviceCode /payeeReceiveInfo/getPayeeReceiveInfoByOwnerId * @path /app/payeeReceiveInfo/getPayeeReceiveInfoByOwnerId */ @RequestMapping(value = "/getPayeeReceiveInfoByOwnerId", method = RequestMethod.GET) public ResponseEntity getPayeeReceiveInfoByOwnerId(@RequestParam(value = "ownerId") String ownerId) { Assert.notNull(ownerId, "业主编号ownerId不能为空"); PayeeReceiveInfoPo queryPo = new PayeeReceiveInfoPo(); queryPo.setOwnerId(ownerId); List> result = sqlSessionTemplate.selectList( "payeeReceiveInfoServiceDaoImpl.getPayeeReceiveInfo", BeanConvertUtil.beanCovertMap(queryPo)); JSONObject resJson = new JSONObject(); resJson.put("code", "0000"); resJson.put("msg", "查询对方收款单位信息成功"); resJson.put("data", result); return ResponseEntity.ok(resJson.toJSONString()); } /** * 统计对方收款单位信息 * * @param ownerId 业主编号(可选) * @param roomId 房屋Id(可选) * @param startCreateTime 开始创建时间(可选,格式:yyyy-MM-dd HH:mm:ss) * @param endCreateTime 结束创建时间(可选) * @return 响应结果 * @serviceCode /payeeReceiveInfo/queryPayeeReceiveInfoStatistics * @path /app/payeeReceiveInfo/queryPayeeReceiveInfoStatistics */ @RequestMapping(value = "/queryPayeeReceiveInfoStatistics", method = RequestMethod.GET) public ResponseEntity queryPayeeReceiveInfoStatistics( @RequestParam(value = "ownerId", required = false) String ownerId, @RequestParam(value = "roomId", required = false) String roomId, @RequestParam(value = "startCreateTime", required = false) String startCreateTime, @RequestParam(value = "endCreateTime", required = false) String endCreateTime) { PayeeReceiveInfoPo queryPo = new PayeeReceiveInfoPo(); queryPo.setOwnerId(ownerId); queryPo.setRoomId(roomId); queryPo.setStartCreateTime(startCreateTime); queryPo.setEndCreateTime(endCreateTime); // 统计查询 Map statistics = sqlSessionTemplate.selectOne( "payeeReceiveInfoServiceDaoImpl.queryPayeeReceiveInfoStatistics", BeanConvertUtil.beanCovertMap(queryPo)); JSONObject resJson = new JSONObject(); resJson.put("code", "0000"); resJson.put("msg", "统计对方收款单位信息成功"); resJson.put("data", statistics); return ResponseEntity.ok(resJson.toJSONString()); } /** * 配套POJO类(内部类形式,也可抽离为独立类) */ public static class PayeeReceiveInfoPo { private Integer id; private String callerName; private String contactInfo; private String payeeInfo; private String invoiceNo; private String invoiceDate; private String receiptNo; private String receiptDate; private String receiptNote; private String receiptNoteDate; private String imageFile; private String ourCompanyReceiveDate; private String attachmentFile; private String createTime; private String updateTime; private String ownerId; private String roomId; // 分页参数 private int page; private int row; // 统计时间范围参数 private String startCreateTime; private String endCreateTime; // Getter & Setter public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getCallerName() { return callerName; } public void setCallerName(String callerName) { this.callerName = callerName; } public String getContactInfo() { return contactInfo; } public void setContactInfo(String contactInfo) { this.contactInfo = contactInfo; } public String getPayeeInfo() { return payeeInfo; } public void setPayeeInfo(String payeeInfo) { this.payeeInfo = payeeInfo; } public String getInvoiceNo() { return invoiceNo; } public void setInvoiceNo(String invoiceNo) { this.invoiceNo = invoiceNo; } public String getInvoiceDate() { return invoiceDate; } public void setInvoiceDate(String invoiceDate) { this.invoiceDate = invoiceDate; } public String getReceiptNo() { return receiptNo; } public void setReceiptNo(String receiptNo) { this.receiptNo = receiptNo; } public String getReceiptDate() { return receiptDate; } public void setReceiptDate(String receiptDate) { this.receiptDate = receiptDate; } public String getReceiptNote() { return receiptNote; } public void setReceiptNote(String receiptNote) { this.receiptNote = receiptNote; } public String getReceiptNoteDate() { return receiptNoteDate; } public void setReceiptNoteDate(String receiptNoteDate) { this.receiptNoteDate = receiptNoteDate; } public String getImageFile() { return imageFile; } public void setImageFile(String imageFile) { this.imageFile = imageFile; } public String getOurCompanyReceiveDate() { return ourCompanyReceiveDate; } public void setOurCompanyReceiveDate(String ourCompanyReceiveDate) { this.ourCompanyReceiveDate = ourCompanyReceiveDate; } public String getAttachmentFile() { return attachmentFile; } public void setAttachmentFile(String attachmentFile) { this.attachmentFile = attachmentFile; } public String getCreateTime() { return createTime; } public void setCreateTime(String createTime) { this.createTime = createTime; } public String getUpdateTime() { return updateTime; } public void setUpdateTime(String updateTime) { this.updateTime = updateTime; } public String getOwnerId() { return ownerId; } public void setOwnerId(String ownerId) { this.ownerId = ownerId; } public String getRoomId() { return roomId; } public void setRoomId(String roomId) { this.roomId = roomId; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } public int getRow() { return row; } public void setRow(int row) { this.row = row; } public String getStartCreateTime() { return startCreateTime; } public void setStartCreateTime(String startCreateTime) { this.startCreateTime = startCreateTime; } public String getEndCreateTime() { return endCreateTime; } public void setEndCreateTime(String endCreateTime) { this.endCreateTime = endCreateTime; } } }