package com.java110.store.api; import com.alibaba.fastjson.JSONObject; import com.java110.dto.contract.ContractAmountDetailDto; 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_amount_detail 表 * @author dev * @date 2025-12-24 */ @RestController @RequestMapping(value = "/contractAmountDetail") public class ContractAmountDetailApi { @Autowired protected SqlSessionTemplate sqlSessionTemplate; /** * 保存合同金额明细信息 * * @param reqJson 请求参数 * @return 响应结果 * @serviceCode /contractAmountDetail/saveContractAmountDetail * @path /app/contractAmountDetail/saveContractAmountDetail */ @RequestMapping(value = "/saveContractAmountDetail", method = RequestMethod.POST) public ResponseEntity saveContractAmountDetail(@RequestBody JSONObject reqJson) { // 核心参数校验 Assert.hasKeyAndValue(reqJson, "contractId", "请求报文中未包含合同ID"); // 转换为DTO ContractAmountDetailDto dto = BeanConvertUtil.covertBean(reqJson, ContractAmountDetailDto.class); // 调用Mapper保存方法 int insert = sqlSessionTemplate.insert("contractAmountDetailDaoImpl.saveContractAmountDetail", 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 saveContractAmountDetail(ContractAmountDetailDto dto) { int insert = sqlSessionTemplate.insert("contractAmountDetailDaoImpl.saveContractAmountDetail", 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 /contractAmountDetail/updateContractAmountDetail * @path /app/contractAmountDetail/updateContractAmountDetail */ @RequestMapping(value = "/updateContractAmountDetail", method = RequestMethod.POST) public ResponseEntity updateContractAmountDetail(@RequestBody JSONObject reqJson) { // 主键/合同ID校验(二选一) Assert.hasKey(reqJson, "id", "请求报文中未包含主键ID"); Assert.hasKey(reqJson, "contractId", "请求报文中未包含合同ID"); ContractAmountDetailDto dto = BeanConvertUtil.covertBean(reqJson, ContractAmountDetailDto.class); // 调用Mapper修改方法 int update = sqlSessionTemplate.update("contractAmountDetailDaoImpl.updateContractAmountDetail", 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 totalContractAmount 合同总金额(可选) * @param unitPrice 单价(可选) * @param accountInfo 账户信息(可选) * @param mainMeterNo 主表编号(可选) * @param paymentRemark 付款备注(可选) * @param page 页码(默认1) * @param row 每页条数(默认10) * @return 响应结果 * @serviceCode /contractAmountDetail/queryContractAmountDetail * @path /app/contractAmountDetail/queryContractAmountDetail */ @RequestMapping(value = "/queryContractAmountDetail", method = RequestMethod.GET) public ResponseEntity queryContractAmountDetail( @RequestParam(value = "id", required = false) String id, @RequestParam(value = "contractId", required = false) String contractId, @RequestParam(value = "totalContractAmount", required = false) String totalContractAmount, @RequestParam(value = "unitPrice", required = false) String unitPrice, @RequestParam(value = "accountInfo", required = false) String accountInfo, @RequestParam(value = "mainMeterNo", required = false) String mainMeterNo, @RequestParam(value = "paymentRemark", required = false) String paymentRemark, @RequestParam(value = "page", defaultValue = "1") int page, @RequestParam(value = "row", defaultValue = "10") int row) { // 封装查询参数 ContractAmountDetailDto queryDto = new ContractAmountDetailDto(); queryDto.setId(Integer.parseInt(id)); queryDto.setContractId(contractId); queryDto.setTotalContractAmount(totalContractAmount); queryDto.setUnitPrice(unitPrice); queryDto.setAccountInfo(accountInfo); queryDto.setMainMeterNo(mainMeterNo); queryDto.setPaymentRemark(paymentRemark); queryDto.setPage((page - 1) * row); queryDto.setRow(row); // 查询列表数据 List> list = sqlSessionTemplate.selectList( "contractAmountDetailDaoImpl.getContractAmountDetail", BeanConvertUtil.beanCovertMap(queryDto)); // 查询总数 Object total = ((HashMap) sqlSessionTemplate.selectOne( "contractAmountDetailDaoImpl.queryContractAmountDetailsCount", 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 /contractAmountDetail/getContractAmountDetailById * @path /app/contractAmountDetail/getContractAmountDetailById */ @RequestMapping(value = "/getContractAmountDetailById", method = RequestMethod.GET) public ResponseEntity getContractAmountDetailById(@RequestParam(value = "id") Integer id) { // 主键校验 Assert.notNull(id, "主键ID不能为空"); ContractAmountDetailDto queryDto = new ContractAmountDetailDto(); queryDto.setId(id); // 查询单条数据 Map result = sqlSessionTemplate.selectOne( "contractAmountDetailDaoImpl.getContractAmountDetail", 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 /contractAmountDetail/getContractAmountDetailByContractId * @path /app/contractAmountDetail/getContractAmountDetailByContractId */ @RequestMapping(value = "/getContractAmountDetailByContractId", method = RequestMethod.GET) public ResponseEntity getContractAmountDetailByContractId(@RequestParam(value = "contractId") String contractId) { Assert.hasLength(contractId, "合同ID不能为空"); ContractAmountDetailDto queryDto = new ContractAmountDetailDto(); queryDto.setContractId(contractId); List> result = sqlSessionTemplate.selectList( "contractAmountDetailDaoImpl.getContractAmountDetail", BeanConvertUtil.beanCovertMap(queryDto)); JSONObject resJson = new JSONObject(); resJson.put("code", "0000"); resJson.put("msg", "查询合同金额明细信息成功"); resJson.put("data", result); return ResponseEntity.ok(resJson.toJSONString()); } }