jialh
1 天以前 dd6687b118561100e1677e88a9c2f5842a54c531
service-fee/src/main/java/com/java110/fee/api/contract/ContractAmountDetailApi.java
@@ -1,235 +1,235 @@
package com.java110.fee.api.contract;
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<String> 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<String> 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<String> 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<String> 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<Map<String, Object>> 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<String> getContractAmountDetailById(@RequestParam(value = "id") Integer id) {
        // 主键校验
        Assert.notNull(id, "主键ID不能为空");
        ContractAmountDetailDto queryDto = new ContractAmountDetailDto();
        queryDto.setId(id);
        // 查询单条数据
        Map<String, Object> 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<String> getContractAmountDetailByContractId(@RequestParam(value = "contractId") String contractId) {
        Assert.hasLength(contractId, "合同ID不能为空");
        ContractAmountDetailDto queryDto = new ContractAmountDetailDto();
        queryDto.setContractId(contractId);
        List<Map<String, Object>> 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());
    }
}
//package com.java110.fee.api.contract;
//
//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 = "/contractAmountDetaila")
//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<String> 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<String> 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<String> 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<String> 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<Map<String, Object>> 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<String> getContractAmountDetailById(@RequestParam(value = "id") Integer id) {
//        // 主键校验
//        Assert.notNull(id, "主键ID不能为空");
//
//        ContractAmountDetailDto queryDto = new ContractAmountDetailDto();
//        queryDto.setId(id);
//
//        // 查询单条数据
//        Map<String, Object> 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<String> getContractAmountDetailByContractId(@RequestParam(value = "contractId") String contractId) {
//        Assert.hasLength(contractId, "合同ID不能为空");
//
//        ContractAmountDetailDto queryDto = new ContractAmountDetailDto();
//        queryDto.setContractId(contractId);
//
//        List<Map<String, Object>> 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());
//    }
//}