diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/TestController.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/TestController.java new file mode 100644 index 0000000..274a1d1 --- /dev/null +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/TestController.java @@ -0,0 +1,104 @@ +package com.easy.admin.modules.huzhou.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.easy.admin.auth.model.SysUser; +import com.easy.admin.common.api.vo.Result; +import com.easy.admin.common.core.exception.EasyException; +import com.easy.admin.modules.huzhou.dao.HuzhouProjectinfoMoneyMapper; +import com.easy.admin.modules.huzhou.entity.HuzhouContractinfo; +import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfoMoney; +import com.easy.admin.modules.huzhou.service.IHuzhouContractinfoService; +import com.easy.admin.util.ShiroUtil; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author gejunhao + * @Date 2025/2/12 9:52 + * @Description: 用于测试接口逻辑 + */ +@Slf4j +@RequestMapping("/test") +@RestController +public class TestController { + @Resource + private IHuzhouContractinfoService contractinfoService; + @Autowired + private HuzhouProjectinfoMoneyMapper projectinfoMoneyMapper; + + @GetMapping("/getContractInfo") + public Result getProjectContractInfo(String projectId,String taskName){ + // 查询存在的问题:根据提交的合同信息去查询 用户提交的 taskName可能更改,只能根据projectId查询,查询的数据是 有两中Flag区分 + // 合同签订阶段回显的是 合同信息(计划) + LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); + qw.eq(HuzhouContractinfo::getProjectId, projectId) + .eq(HuzhouContractinfo::getFlag, taskName.equals("合同签订") ? "计划" : "实际"); + // 2.查询数据库中符合条件的合同信息 +// List dbList = contractinfoService.list(qw); +// boolean flag = contractinfoService.removeBatchByIds(dbList); +// if (flag){ +// log.info("删除原有数据成功!---{}",dbList); +// } + SysUser currentUser = ShiroUtil.getCurrentUser(); + currentUser.getId(); + return Result.OK(currentUser.getId()); + } + + /** + * 金额校验 + * @param contractinfoList + * @return + * @throws JsonProcessingException + */ + @PostMapping("/checkAmount") + public Result checkAmount( @RequestParam(value = "contractinfoList", required = false) String contractinfoList, + @RequestParam(value = "contractMoneyFieldsValue", required = false) String contractMoneyFieldsValue) throws JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + // 1.需要更新的合同信息集合 + List contractList = mapper.readValue(contractinfoList, new TypeReference>() { + }); + Boolean flag = false; + String msg = "总金额与其他金额之和不相等,请重新输入!"; + HuzhouProjectinfoMoney huzhouProjectinfoMoney = new HuzhouProjectinfoMoney(); + ObjectMapper mapper2 = new ObjectMapper(); + huzhouProjectinfoMoney = mapper2.readValue(contractMoneyFieldsValue, new TypeReference(){}); + HuzhouProjectinfoMoney projectMoney = projectinfoMoneyMapper.selectById(huzhouProjectinfoMoney.getId()); + Double contractTotalMoney = projectMoney.getContractTotalMoney(); + Double contractSelfMoney = projectMoney.getContractSelfMoney(); + Double contractCentralMoney = projectMoney.getContractCentralMoney(); + Double contractProvincialMoney = projectMoney.getContractProvincialMoney(); + Double contractCityMoney = projectMoney.getContractCityMoney(); + Double contractCountyMoney = projectMoney.getContractCountyMoney(); + Double approvalProvincialMoney = projectMoney.getApprovalProvincialMoney(); + + // 总金额等于其他金额相加之和 + for (HuzhouContractinfo contract : contractList) { + Double totalMoney = contract.getTotalMoney(); + Double centralMoney = contract.getCentralMoney() != null ? contract.getCentralMoney() : 0.0; + Double provincialMoney = contract.getProvincialMoney() != null ? contract.getProvincialMoney() : 0.0; + Double cityMoney = contract.getCityMoney() != null ? contract.getCityMoney() : 0.0; + Double countyMoney = contract.getCountyMoney() != null ? contract.getCountyMoney() : 0.0; + Double selfMoney = contract.getSelfMoney() != null ? contract.getSelfMoney() : 0.0; + + // 计算其他资金来源金额之和 + double sumOfOtherMoneys = centralMoney + provincialMoney + cityMoney + countyMoney + selfMoney; + + // 检查总金额是否等于其他资金来源金额之和 + if (Double.compare(totalMoney, sumOfOtherMoneys) != 0) { + // 可以在这里抛出异常或者记录错误信息 + throw new EasyException("总金额与其他金额之和不相等,请重新输入! " ); + }else { + flag = true; + //msg = "总金额与其他金额之和相等,校验通过!" ; + } + } + return Result.OK(flag); + } +}