|
|
@ -6,12 +6,13 @@ import org.springframework.web.bind.annotation.RequestMapping; |
|
|
|
import org.springframework.web.bind.annotation.RestController; |
|
|
|
import org.springframework.web.bind.annotation.RestController; |
|
|
|
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
|
|
|
|
import java.time.LocalDate; |
|
|
|
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
|
|
|
|
import java.time.format.DateTimeFormatter; |
|
|
|
|
|
|
|
import java.time.format.DateTimeParseException; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import java.util.Map; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.UUID; |
|
|
|
import java.util.UUID; |
|
|
|
import java.time.LocalDate; // 新增日期类
|
|
|
|
|
|
|
|
import java.time.format.DateTimeFormatter; // 新增日期格式化类
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@RestController |
|
|
|
@RestController |
|
|
|
public class acceptdebit { |
|
|
|
public class acceptdebit { |
|
|
@ -19,39 +20,122 @@ public class acceptdebit { |
|
|
|
@Autowired |
|
|
|
@Autowired |
|
|
|
private JdbcTemplate jdbcTemplate; |
|
|
|
private JdbcTemplate jdbcTemplate; |
|
|
|
|
|
|
|
|
|
|
|
@RequestMapping("/acceptdebitA") |
|
|
|
@RequestMapping("/acceptdebit") |
|
|
|
public Object acceptdebit2(HttpServletRequest request) { |
|
|
|
public Map<String, Object> acceptDebit(HttpServletRequest request) { |
|
|
|
|
|
|
|
Map<String, Object> response = new HashMap<>(); |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
// 1. 获取所有必填字段
|
|
|
|
|
|
|
|
String CertificatesNo = getRequiredParameter(request, "CertificatesNo"); |
|
|
|
|
|
|
|
String debitTp = getRequiredParameter(request, "debitTp"); |
|
|
|
|
|
|
|
String debitBank = getRequiredParameter(request, "debitBank"); |
|
|
|
|
|
|
|
String debitAmount = getRequiredParameter(request, "debitAmount"); |
|
|
|
|
|
|
|
String debitTerm = getRequiredParameter(request, "debitTerm"); |
|
|
|
|
|
|
|
// String corp = request.getParameter( "corp");
|
|
|
|
|
|
|
|
String CertificatesTp = getRequiredParameter(request, "CertificatesTp"); |
|
|
|
|
|
|
|
String CustomerName = getRequiredParameter(request, "CustomerName"); |
|
|
|
|
|
|
|
String CustomerGender = getRequiredParameter(request, "CustomerGender"); |
|
|
|
|
|
|
|
String CustomerBirthday = request.getParameter( "CustomerBirthday"); |
|
|
|
|
|
|
|
String address = getRequiredParameter(request, "address"); |
|
|
|
|
|
|
|
String ifmaterialComplete = getRequiredParameter(request, "ifmaterialComplete"); |
|
|
|
|
|
|
|
String paydebitTp = getRequiredParameter(request, "paydebitTp"); |
|
|
|
|
|
|
|
String submissionTime = request.getParameter("SubmissionTime"); // 允许为空
|
|
|
|
|
|
|
|
|
|
|
|
//第一步,取下前端的字段
|
|
|
|
// 2. 参数校验
|
|
|
|
String CertificatesNo=request.getParameter("CertificatesNo");//贷款人(证件号码)
|
|
|
|
validateCode("贷款类型", debitTp, 1,2, 3); |
|
|
|
String debitTp =request.getParameter("debitTp");//贷款类型 (1-住房类、2-消费类、3-经营类)
|
|
|
|
validateCode("贷款期限", debitTerm, 1, 2, 3); |
|
|
|
String debitBank =request.getParameter("debitBank");//贷款银行
|
|
|
|
// validateCode("性别", CustomerGender, 0, 1);
|
|
|
|
String debitAmount =request.getParameter("debitAmount");//贷款金额
|
|
|
|
validateCode("材料状态", ifmaterialComplete, 1,2); |
|
|
|
String debitTerm =request.getParameter("debitTerm");//贷款期限(1-一年、2-两年、5-五年)
|
|
|
|
validateCode("还款类型", paydebitTp, 1,2,3); |
|
|
|
|
|
|
|
|
|
|
|
UUID uuid=UUID.randomUUID(); |
|
|
|
// 3. 生成业务数据
|
|
|
|
String fullSeq=uuid.toString(); |
|
|
|
String debitNo = generateDebitNo(); |
|
|
|
|
|
|
|
LocalDateTime debitDate = parseDateTime(submissionTime); // 使用传入时间或当前时间
|
|
|
|
|
|
|
|
LocalDate birthDate = parseBirthDate(CustomerBirthday); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 4. 使用参数化SQL防止注入
|
|
|
|
|
|
|
|
String sql = "INSERT INTO newbank.debit (" + |
|
|
|
|
|
|
|
"debitNo, CertificatesNo, debitTp, debitBank, debitAmount, " + |
|
|
|
|
|
|
|
"debitTerm, state, CertificatesTp, CustomerName, " + |
|
|
|
|
|
|
|
"CustomerGender, CustomerBirthday, address, ifmaterialComplete, " + |
|
|
|
|
|
|
|
"paydebitTp, SubmissionTime) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; |
|
|
|
|
|
|
|
|
|
|
|
LocalDate currentDate = LocalDate.now(); // 获取当前日期
|
|
|
|
int result = jdbcTemplate.update(sql, |
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); |
|
|
|
debitNo, |
|
|
|
String formattedDate = currentDate.format(formatter); // 格式化为字符串
|
|
|
|
CertificatesNo, |
|
|
|
|
|
|
|
// corp,
|
|
|
|
|
|
|
|
debitTp, |
|
|
|
|
|
|
|
debitBank, |
|
|
|
|
|
|
|
debitAmount, |
|
|
|
|
|
|
|
debitTerm, |
|
|
|
|
|
|
|
|
|
|
|
//第二步,写sql
|
|
|
|
0, // 初始状态为受理
|
|
|
|
String sql ="INSERT INTO newbank.debit\n" + |
|
|
|
CertificatesTp, |
|
|
|
"(debitNo, CertificatesNo, corp, debitTp, debitBank, debitAmount, debitTerm, debitDate, payAmount, leftDate, state, payDate)\n" + |
|
|
|
CustomerName, |
|
|
|
"VALUES('"+fullSeq+"', '"+CertificatesNo+"', NULL, '"+debitTp+"', '"+debitBank+"', '"+debitAmount+"', '"+debitTerm+"', '"+formattedDate+"', NULL, NULL, '0', NULL);"; |
|
|
|
CustomerGender, |
|
|
|
|
|
|
|
birthDate, |
|
|
|
|
|
|
|
address, |
|
|
|
|
|
|
|
ifmaterialComplete, |
|
|
|
|
|
|
|
paydebitTp, |
|
|
|
|
|
|
|
debitDate // 使用统一时间字段
|
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 5. 返回结果
|
|
|
|
|
|
|
|
response.put("debitNo", debitNo); |
|
|
|
|
|
|
|
response.put("status", 0); |
|
|
|
|
|
|
|
response.put("success", result == 1); |
|
|
|
|
|
|
|
|
|
|
|
//第三步,执行sql
|
|
|
|
} catch (IllegalArgumentException e) { |
|
|
|
int result=jdbcTemplate.update(sql); |
|
|
|
response.put("error", e.getMessage()); |
|
|
|
|
|
|
|
response.put("success", false); |
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
|
|
response.put("error", "系统处理异常"); |
|
|
|
|
|
|
|
response.put("success", false); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return response; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
HashMap<Object, Object> map = new HashMap<>(); |
|
|
|
private String getRequiredParameter(HttpServletRequest request, String param) { |
|
|
|
map.put("debitNo", fullSeq); |
|
|
|
String value = request.getParameter(param); |
|
|
|
map.put("result", result); |
|
|
|
if (value == null || value.trim().isEmpty()) { |
|
|
|
//第四步,返回
|
|
|
|
throw new IllegalArgumentException("缺少必要参数: " + param); |
|
|
|
return map; |
|
|
|
} |
|
|
|
|
|
|
|
return value.trim(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void validateCode(String fieldName, String value, int... validCodes) { |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
int code = Integer.parseInt(value); |
|
|
|
|
|
|
|
for (int valid : validCodes) { |
|
|
|
|
|
|
|
if (code == valid) return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
throw new IllegalArgumentException(fieldName + "代码无效"); |
|
|
|
|
|
|
|
} catch (NumberFormatException e) { |
|
|
|
|
|
|
|
throw new IllegalArgumentException(fieldName + "格式错误"); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private String generateDebitNo() { |
|
|
|
|
|
|
|
return "LOAN-" + LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE) |
|
|
|
|
|
|
|
+ "-" + UUID.randomUUID().toString().substring(0, 6).toUpperCase(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private LocalDateTime parseDateTime(String datetimeStr) { |
|
|
|
|
|
|
|
if (datetimeStr == null || datetimeStr.isEmpty()) { |
|
|
|
|
|
|
|
return LocalDateTime.now(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
return LocalDateTime.parse(datetimeStr, DateTimeFormatter.ISO_DATE_TIME); |
|
|
|
|
|
|
|
} catch (DateTimeParseException e) { |
|
|
|
|
|
|
|
throw new IllegalArgumentException("时间格式错误,请使用ISO格式(如:2023-01-01T10:00:00)"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private LocalDate parseBirthDate(String birthDateStr) { |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
return LocalDate.parse(birthDateStr, DateTimeFormatter.ISO_DATE); |
|
|
|
|
|
|
|
} catch (DateTimeParseException e) { |
|
|
|
|
|
|
|
throw new IllegalArgumentException("生日格式错误,请使用yyyy-MM-dd格式"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |