package com.java110.fee.api.contract;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.java110.dto.contract.ContractPaymentStatusDto;
|
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;
|
|
/**
|
* 合同收款状态信息接口
|
* 适配 contract_payment_status 表
|
* @author dev
|
* @date 2025-12-24
|
*/
|
@RestController
|
@RequestMapping(value = "/contractPaymentStatus")
|
public class ContractPaymentStatusApi {
|
|
@Autowired
|
protected SqlSessionTemplate sqlSessionTemplate;
|
|
/**
|
* 保存合同收款状态信息
|
*
|
* @param reqJson 请求参数
|
* @return 响应结果
|
* @serviceCode /contractPaymentStatus/saveContractPaymentStatus
|
* @path /app/contractPaymentStatus/saveContractPaymentStatus
|
*/
|
@RequestMapping(value = "/saveContractPaymentStatus", method = RequestMethod.POST)
|
public ResponseEntity<String> saveContractPaymentStatus(@RequestBody JSONObject reqJson) {
|
// 核心参数校验
|
Assert.hasKeyAndValue(reqJson, "contractId", "请求报文中未包含合同ID");
|
|
// 转换为DTO
|
ContractPaymentStatusDto dto = BeanConvertUtil.covertBean(reqJson, ContractPaymentStatusDto.class);
|
|
// 调用Mapper保存方法
|
int insert = sqlSessionTemplate.insert("contractPaymentStatusDaoImpl.saveContractPaymentStatus",
|
BeanConvertUtil.beanCovertMap(dto));
|
|
// 构造响应结果
|
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());
|
}
|
|
/**
|
* 重载保存方法(入参为DTO)
|
*/
|
public ResponseEntity<String> saveContractPaymentStatus(ContractPaymentStatusDto dto) {
|
int insert = sqlSessionTemplate.insert("contractPaymentStatusDaoImpl.saveContractPaymentStatus",
|
BeanConvertUtil.beanCovertMap(dto));
|
|
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 请求参数
|
* @return 响应结果
|
* @serviceCode /contractPaymentStatus/updateContractPaymentStatus
|
* @path /app/contractPaymentStatus/updateContractPaymentStatus
|
*/
|
@RequestMapping(value = "/updateContractPaymentStatus", method = RequestMethod.POST)
|
public ResponseEntity<String> updateContractPaymentStatus(@RequestBody JSONObject reqJson) {
|
// 主键/合同ID校验(二选一)
|
Assert.hasKey(reqJson, "id", "请求报文中未包含主键ID");
|
Assert.hasKey(reqJson, "contractId", "请求报文中未包含合同ID");
|
|
ContractPaymentStatusDto dto = BeanConvertUtil.covertBean(reqJson, ContractPaymentStatusDto.class);
|
|
// 调用Mapper修改方法
|
int update = sqlSessionTemplate.update("contractPaymentStatusDaoImpl.updateContractPaymentStatus",
|
BeanConvertUtil.beanCovertMap(dto));
|
|
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 id 主键ID(可选)
|
* @param contractId 合同ID(可选)
|
* @param paymentStatus 付款状态(可选)
|
* @param receivableAmount 应收金额(可选)
|
* @param receivedAmount 已收金额(可选)
|
* @param unpaidAmount 未付金额(可选)
|
* @param specialDiscount 特殊折扣(可选)
|
* @param collectionProgress 收款进度(可选)
|
* @param finalCollectionDeadline 最终收款截止日期(可选)
|
* @param collectionReminderStatus 收款提醒状态(可选)
|
* @param remark 备注(可选)
|
* @param page 页码(默认1)
|
* @param row 每页条数(默认10)
|
* @return 响应结果
|
* @serviceCode /contractPaymentStatus/queryContractPaymentStatus
|
* @path /app/contractPaymentStatus/queryContractPaymentStatus
|
*/
|
@RequestMapping(value = "/queryContractPaymentStatus", method = RequestMethod.GET)
|
public ResponseEntity<String> queryContractPaymentStatus(
|
@RequestParam(value = "id", required = false) String id,
|
@RequestParam(value = "contractId", required = false) String contractId,
|
@RequestParam(value = "paymentStatus", required = false) String paymentStatus,
|
@RequestParam(value = "receivableAmount", required = false) String receivableAmount,
|
@RequestParam(value = "receivedAmount", required = false) String receivedAmount,
|
@RequestParam(value = "unpaidAmount", required = false) String unpaidAmount,
|
@RequestParam(value = "specialDiscount", required = false) String specialDiscount,
|
@RequestParam(value = "collectionProgress", required = false) String collectionProgress,
|
@RequestParam(value = "finalCollectionDeadline", required = false) String finalCollectionDeadline,
|
@RequestParam(value = "collectionReminderStatus", required = false) String collectionReminderStatus,
|
@RequestParam(value = "remark", required = false) String remark,
|
@RequestParam(value = "page", defaultValue = "1") int page,
|
@RequestParam(value = "row", defaultValue = "10") int row) {
|
|
// 封装查询参数
|
ContractPaymentStatusDto queryDto = new ContractPaymentStatusDto();
|
if (id != null && !id.isEmpty()) {
|
queryDto.setId(Integer.parseInt(id));
|
}
|
queryDto.setContractId(contractId);
|
queryDto.setPaymentStatus(paymentStatus);
|
queryDto.setReceivableAmount(receivableAmount);
|
queryDto.setReceivedAmount(receivedAmount);
|
queryDto.setUnpaidAmount(unpaidAmount);
|
queryDto.setSpecialDiscount(specialDiscount);
|
queryDto.setCollectionProgress(collectionProgress);
|
queryDto.setFinalCollectionDeadline(finalCollectionDeadline);
|
queryDto.setCollectionReminderStatus(collectionReminderStatus);
|
queryDto.setRemark(remark);
|
queryDto.setPage((page - 1) * row); // 适配MySQL limit 分页(页码从0开始)
|
queryDto.setRow(row);
|
|
// 查询列表数据
|
List<Map<String, Object>> list = sqlSessionTemplate.selectList(
|
"contractPaymentStatusDaoImpl.getContractPaymentStatus",
|
BeanConvertUtil.beanCovertMap(queryDto));
|
|
// 查询总数
|
Object total = ((HashMap) sqlSessionTemplate.selectOne(
|
"contractPaymentStatusDaoImpl.queryContractPaymentStatusCount",
|
BeanConvertUtil.beanCovertMap(queryDto))).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 /contractPaymentStatus/getContractPaymentStatusById
|
* @path /app/contractPaymentStatus/getContractPaymentStatusById
|
*/
|
@RequestMapping(value = "/getContractPaymentStatusById", method = RequestMethod.GET)
|
public ResponseEntity<String> getContractPaymentStatusById(@RequestParam(value = "id") Integer id) {
|
// 主键校验
|
Assert.notNull(id, "主键ID不能为空");
|
|
ContractPaymentStatusDto queryDto = new ContractPaymentStatusDto();
|
queryDto.setId(id);
|
|
// 查询单条数据
|
Map<String, Object> result = sqlSessionTemplate.selectOne(
|
"contractPaymentStatusDaoImpl.getContractPaymentStatus",
|
BeanConvertUtil.beanCovertMap(queryDto));
|
|
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());
|
}
|
|
/**
|
* 根据合同ID查询合同收款状态信息
|
*
|
* @param contractId 合同ID
|
* @return 响应结果
|
* @serviceCode /contractPaymentStatus/getContractPaymentStatusByContractId
|
* @path /app/contractPaymentStatus/getContractPaymentStatusByContractId
|
*/
|
@RequestMapping(value = "/getContractPaymentStatusByContractId", method = RequestMethod.GET)
|
public ResponseEntity<String> getContractPaymentStatusByContractId(@RequestParam(value = "contractId") String contractId) {
|
Assert.hasLength(contractId, "合同ID不能为空");
|
|
ContractPaymentStatusDto queryDto = new ContractPaymentStatusDto();
|
queryDto.setContractId(contractId);
|
|
List<Map<String, Object>> result = sqlSessionTemplate.selectList(
|
"contractPaymentStatusDaoImpl.getContractPaymentStatus",
|
BeanConvertUtil.beanCovertMap(queryDto));
|
|
JSONObject resJson = new JSONObject();
|
resJson.put("code", "0000");
|
resJson.put("msg", "查询合同收款状态信息成功");
|
resJson.put("data", result);
|
|
return ResponseEntity.ok(resJson.toJSONString());
|
}
|
}
|