diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/dao/CoreUserDao.java b/admin-core/src/main/java/com/ibeetl/admin/core/dao/CoreUserDao.java index 86c37708..422987be 100644 --- a/admin-core/src/main/java/com/ibeetl/admin/core/dao/CoreUserDao.java +++ b/admin-core/src/main/java/com/ibeetl/admin/core/dao/CoreUserDao.java @@ -84,4 +84,7 @@ public interface CoreUserDao extends BaseMapper<CoreUser> { List<CoreUser> findAll(); void deleteById1(Long userId); + + + List<Map<String,Object>> getUsersBySchoolId(Long schoolId); } diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreUserService.java b/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreUserService.java index fcb5bc36..ee308b2e 100644 --- a/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreUserService.java +++ b/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreUserService.java @@ -407,4 +407,9 @@ public class CoreUserService extends CoreBaseService<CoreUser> { public void deleteById1(Long userId) { sqlManager.deleteById(CoreUser.class, userId); } + + + public List<Map<String,Object>> getUsersBySchoolId(Long schoolId){ + return coreUserDao.getUsersBySchoolId(schoolId); + } } diff --git a/admin-core/src/main/resources/sql/core/coreUser.md b/admin-core/src/main/resources/sql/core/coreUser.md index 06116296..b3b7c78d 100644 --- a/admin-core/src/main/resources/sql/core/coreUser.md +++ b/admin-core/src/main/resources/sql/core/coreUser.md @@ -249,4 +249,8 @@ findAll deleteById1 === -delete from core_user where ID = #userId# \ No newline at end of file +delete from core_user where ID = #userId# + +getUsersBySchoolId +=== + select \ No newline at end of file diff --git a/web/src/main/java/com/ibeetl/jlw/dao/StudentAccountAssetAllocationDao.java b/web/src/main/java/com/ibeetl/jlw/dao/StudentAccountAssetAllocationDao.java index d98de70c..441d5b23 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/StudentAccountAssetAllocationDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/StudentAccountAssetAllocationDao.java @@ -35,4 +35,8 @@ public interface StudentAccountAssetAllocationDao extends BaseMapper<StudentAcco List<StudentAccountAssetAllocation> getInfo(Long studentId); List<StudentAccountAssetAllocation> getInfoByStudentIdAnIsInstitution(Long studentId); + + List<StudentAccountAssetAllocation> getByStudentAndApplicationIsNotIn(Long studentId); + + Map<String,Object> getMapByStudentIdForForeign(Long studentId); } diff --git a/web/src/main/java/com/ibeetl/jlw/dao/StudentAccountForeignExchangeInvestmentSystemDao.java b/web/src/main/java/com/ibeetl/jlw/dao/StudentAccountForeignExchangeInvestmentSystemDao.java index 969eeb51..b468353e 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/StudentAccountForeignExchangeInvestmentSystemDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/StudentAccountForeignExchangeInvestmentSystemDao.java @@ -1,5 +1,6 @@ package com.ibeetl.jlw.dao; +import com.ibeetl.jlw.entity.StudentAccountForeignExchangeInvestmentSystem; import com.ibeetl.jlw.entity.StudentAccountP2pSystem; import com.ibeetl.jlw.web.query.StudentAccountP2pSystemQuery; import org.beetl.sql.core.engine.PageQuery; @@ -15,8 +16,10 @@ import java.util.List; // 实际可以不用加Repository注解,调用的地方注入时候,Idea会报红,看着难受 @Repository @SqlResource("jlw.studentAccountForeignExchangeInvestmentSystem") -public interface StudentAccountForeignExchangeInvestmentSystemDao extends BaseMapper<StudentAccountP2pSystem> { - PageQuery<StudentAccountP2pSystem> queryByCondition(PageQuery query); +public interface StudentAccountForeignExchangeInvestmentSystemDao extends BaseMapper<StudentAccountForeignExchangeInvestmentSystem> { + PageQuery<StudentAccountForeignExchangeInvestmentSystem> queryByCondition(PageQuery query); - List<StudentAccountP2pSystem> getValuesByQueryNotWithPermission(StudentAccountP2pSystemQuery studentAccountP2pSystemQuery); + List<StudentAccountForeignExchangeInvestmentSystem> getValuesByQueryNotWithPermission(StudentAccountForeignExchangeInvestmentSystem system); + + StudentAccountForeignExchangeInvestmentSystem getByStudentId(Long studentId); } diff --git a/web/src/main/java/com/ibeetl/jlw/dao/StudentDao.java b/web/src/main/java/com/ibeetl/jlw/dao/StudentDao.java index 4efdf4ea..098f0ead 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/StudentDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/StudentDao.java @@ -137,4 +137,9 @@ public interface StudentDao extends BaseMapper<Student>{ Student getByOldId(Long oldId); Student getStudentByStudentNo(String studentNo); + + + List<Student> getNoAssetStudent(); + + Map<String,Object> getMapByStudentIdForForeign(Long studentId); } \ No newline at end of file diff --git a/web/src/main/java/com/ibeetl/jlw/dao/UniversitiesCollegesJurisdictionExperimentalSystemDao.java b/web/src/main/java/com/ibeetl/jlw/dao/UniversitiesCollegesJurisdictionExperimentalSystemDao.java index 6d01fbea..2ec19738 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/UniversitiesCollegesJurisdictionExperimentalSystemDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/UniversitiesCollegesJurisdictionExperimentalSystemDao.java @@ -51,4 +51,6 @@ public interface UniversitiesCollegesJurisdictionExperimentalSystemDao extends B * @return */ List<UniversitiesCollegesJurisdictionExperimentalSystem> getNotExpireApply( @Param("orgId") Long orgId , @Param("typeId") String typeIds); + + List<UniversitiesCollegesJurisdictionExperimentalSystem>forexSimulationTradingAuthorizationSchoolDataInterface(); } \ No newline at end of file diff --git a/web/src/main/java/com/ibeetl/jlw/entity/StudentAccountForeignExchangeInvestmentSystem.java b/web/src/main/java/com/ibeetl/jlw/entity/StudentAccountForeignExchangeInvestmentSystem.java new file mode 100644 index 00000000..21836908 --- /dev/null +++ b/web/src/main/java/com/ibeetl/jlw/entity/StudentAccountForeignExchangeInvestmentSystem.java @@ -0,0 +1,71 @@ +package com.ibeetl.jlw.entity; + +import com.ibeetl.admin.core.entity.BaseEntity; +import com.ibeetl.admin.core.util.ValidateConfig; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.beetl.sql.annotation.entity.AutoID; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; + +@ApiModel("外汇模拟交易资产表") +@Data +public class StudentAccountForeignExchangeInvestmentSystem extends BaseEntity { + //主键ID + @NotNull(message = "ID不能为空", groups = ValidateConfig.UPDATE.class) + @AutoID + private Long id ; + @ApiModelProperty("学生ID") + private Long studentId; + @ApiModelProperty("应用ID") + private Long applicationId; + @ApiModelProperty("院校ID") + private Long universitiesCollegesId; + @ApiModelProperty("账户ID") + private Long accountId; + @ApiModelProperty("账户名称") + private String accountName; + @ApiModelProperty("账户开通状态 1:未开通 2:已开通") + private Long state; + @ApiModelProperty("期初资金") + private BigDecimal initialCapital; + @ApiModelProperty("期初投资资金") + private BigDecimal initialInvestmentCapital; + @ApiModelProperty("可用余额") + private BigDecimal availableBalance; + @ApiModelProperty("总资产") + private BigDecimal totalAssets; + @ApiModelProperty("总投资额") + private BigDecimal totalInvestment; + @ApiModelProperty("总借款") + private BigDecimal totalBorrow; + @ApiModelProperty("冻结资金") + private BigDecimal frozenFunds; + @ApiModelProperty("累计收益") + private BigDecimal cumulativeIncome; + @ApiModelProperty("总资产收益") + private BigDecimal totalAssetIncome; + @ApiModelProperty("净资产收益") + private BigDecimal netAssetIncome; + @ApiModelProperty("日投资总金额") + private BigDecimal totalDailyInvestmentAmount; + @ApiModelProperty("周投资总金额") + private BigDecimal totalAmountWeeklyInvestment; + @ApiModelProperty("月投资总金额") + private BigDecimal totalAmountMonthlyInvestment; + @ApiModelProperty("'修改时间'") + private Date updateTime ; + @ApiModelProperty("'创建时间'") + private Date createTime ; + @ApiModelProperty("是否删除 1: 正常,2: 删除") + private Long isDel ; + @ApiModelProperty("是否机构 1: 个人,2: 机构") + private Long isInstitution ; + @ApiModelProperty("用户ID") + private Long userId ; + @ApiModelProperty("机构ID") + private Long orgId ; +} diff --git a/web/src/main/java/com/ibeetl/jlw/enums/AccountTypeEnum.java b/web/src/main/java/com/ibeetl/jlw/enums/AccountTypeEnum.java index 04922418..87570f89 100644 --- a/web/src/main/java/com/ibeetl/jlw/enums/AccountTypeEnum.java +++ b/web/src/main/java/com/ibeetl/jlw/enums/AccountTypeEnum.java @@ -39,7 +39,7 @@ import org.beetl.sql.annotation.entity.EnumValue; public enum AccountTypeEnum { /**现金账户*/ - CASH_ACCOUNT("现金账户"), +// CASH_ACCOUNT("现金账户"), /**银行账户*/ BANK_ACCOUNT("银行账户"), diff --git a/web/src/main/java/com/ibeetl/jlw/service/StudentAccountAssetAllocationService.java b/web/src/main/java/com/ibeetl/jlw/service/StudentAccountAssetAllocationService.java index 4ddcd982..405f7c94 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/StudentAccountAssetAllocationService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/StudentAccountAssetAllocationService.java @@ -10,6 +10,8 @@ import cn.hutool.jwt.JWTUtil; import cn.jlw.util.ToolUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.service.CoreBaseService; import com.ibeetl.admin.core.service.CoreUserService; @@ -37,10 +39,13 @@ import javax.validation.constraints.NotBlank; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Type; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.HttpURLConnection; import java.net.URL; +import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.sql.Connection; import java.sql.DriverManager; @@ -73,8 +78,6 @@ public class StudentAccountAssetAllocationService extends CoreBaseService<Studen private ResourcesApplicationCourseService resourcesApplicationCourseService; @Autowired private CourseInfoService courseInfoService; - - @Autowired private UniversitiesCollegesDao universitiesCollegesDao; @@ -95,7 +98,8 @@ public class StudentAccountAssetAllocationService extends CoreBaseService<Studen private StudentAccountEquityInvestmentSystemService studentAccountEquityInvestmentSystemService; @Autowired private StudentAccountMockTradingSystemService studentAccountMockTradingSystemService; - + @Autowired + private StudentAccountForeignExchangeInvestmentSystemService studentAccountForeignExchangeInvestmentSystemService; private final static String URL = "jdbc:sqlserver://120.79.161.177:1433;databaseName=Test.Zhiyun_v2.0;trustServerCertificate=true;encrypt=true"; public PageQuery<StudentAccountAssetAllocation> queryByCondition(PageQuery query) { @@ -103,6 +107,7 @@ public class StudentAccountAssetAllocationService extends CoreBaseService<Studen queryListAfter(ret.getList()); return ret; } + private final static String USER = "sa"; public void deleteByList(List list) { @@ -296,6 +301,7 @@ public class StudentAccountAssetAllocationService extends CoreBaseService<Studen return payload; } + private final static String PASSWORD = "sztzjy@2017"; /** @@ -384,15 +390,15 @@ public class StudentAccountAssetAllocationService extends CoreBaseService<Studen if (ObjectUtil.equals(state, 2)) { - if(accountAssetAllocation!=null){ - accountAssetAllocation.setInitialCapital(accountAssetAllocation.getInitialCapital()==null?new BigDecimal(0):accountAssetAllocation.getInitialCapital()); - accountAssetAllocation.setAvailableFunds(accountAssetAllocation.getAvailableFunds()==null?new BigDecimal(0):accountAssetAllocation.getAvailableFunds()); - accountAssetAllocation.setInitialInvestmentCapital(accountAssetAllocation.getInitialInvestmentCapital()==null?new BigDecimal(0):accountAssetAllocation.getInitialInvestmentCapital()); - accountAssetAllocation.setInitialCapital(Objects.equals(accountAssetAllocation.getInitialCapital().compareTo(BigDecimal.ZERO), 0) ? new BigDecimal(1000000) : accountAssetAllocation.getInitialCapital()); - accountAssetAllocation.setAvailableFunds(Objects.equals(accountAssetAllocation.getAvailableFunds().compareTo(BigDecimal.ZERO), 0) ? new BigDecimal(1000000) : accountAssetAllocation.getAvailableFunds()); - accountAssetAllocation.setInitialInvestmentCapital(Objects.equals(accountAssetAllocation.getInitialInvestmentCapital().compareTo(BigDecimal.ZERO), 0) ? new BigDecimal(1000000) : accountAssetAllocation.getInitialInvestmentCapital()); - accountAssetAllocation.setUpdateTime(new Date()); - } + if (accountAssetAllocation != null) { + accountAssetAllocation.setInitialCapital(accountAssetAllocation.getInitialCapital() == null ? new BigDecimal(0) : accountAssetAllocation.getInitialCapital()); + accountAssetAllocation.setAvailableFunds(accountAssetAllocation.getAvailableFunds() == null ? new BigDecimal(0) : accountAssetAllocation.getAvailableFunds()); + accountAssetAllocation.setInitialInvestmentCapital(accountAssetAllocation.getInitialInvestmentCapital() == null ? new BigDecimal(0) : accountAssetAllocation.getInitialInvestmentCapital()); + accountAssetAllocation.setInitialCapital(Objects.equals(accountAssetAllocation.getInitialCapital().compareTo(BigDecimal.ZERO), 0) ? new BigDecimal(1000000) : accountAssetAllocation.getInitialCapital()); + accountAssetAllocation.setAvailableFunds(Objects.equals(accountAssetAllocation.getAvailableFunds().compareTo(BigDecimal.ZERO), 0) ? new BigDecimal(1000000) : accountAssetAllocation.getAvailableFunds()); + accountAssetAllocation.setInitialInvestmentCapital(Objects.equals(accountAssetAllocation.getInitialInvestmentCapital().compareTo(BigDecimal.ZERO), 0) ? new BigDecimal(1000000) : accountAssetAllocation.getInitialInvestmentCapital()); + accountAssetAllocation.setUpdateTime(new Date()); + } } if (!ObjectUtil.equals(accountAssetAllocation.getApplicationId(), -1L) && @@ -426,6 +432,7 @@ public class StudentAccountAssetAllocationService extends CoreBaseService<Studen studentAccountAssetAllocationDao.updateById(accountAssetAllocation); } } + @Autowired private CoreUserService coreUserService; @@ -533,14 +540,13 @@ public class StudentAccountAssetAllocationService extends CoreBaseService<Studen } if (ObjectUtil.equals(values[i].getText(), AccountTypeEnum.BANK_ACCOUNT.getText())) { allocation.setState(2); - allocation.setApplicationId(ObjectUtil.equals(values[i].getText(), AccountTypeEnum.BANK_ACCOUNT.getText()) ? -2L : -1L); - - allocation.setInitialCapital(ObjectUtil.equals(values[i].getText(), AccountTypeEnum.BANK_ACCOUNT.getText()) ? - new BigDecimal(2000000) : BigDecimal.ZERO); - allocation.setAvailableFunds(ObjectUtil.equals(values[i].getText(), AccountTypeEnum.BANK_ACCOUNT.getText()) ? - new BigDecimal(2000000) : BigDecimal.ZERO); - allocation.setInitialInvestmentCapital(ObjectUtil.equals(values[i].getText(), AccountTypeEnum.BANK_ACCOUNT.getText()) ? - new BigDecimal(2000000) : BigDecimal.ZERO); + allocation.setApplicationId(ObjectUtil.equals(values[i].getText(), AccountTypeEnum.BANK_ACCOUNT.getText()) ? -1L : -2L); + allocation.setInitialCapital( + new BigDecimal(2000000)); + allocation.setAvailableFunds( + new BigDecimal(2000000)); + allocation.setInitialInvestmentCapital( + new BigDecimal(2000000)); } else { if (ObjectUtil.isNotNull(query.getApplicationSecondLevelRelation())) { List<ResourcesApplication> applications = resourcesApplicationDao.getValuesByQuery(query); @@ -579,14 +585,14 @@ public class StudentAccountAssetAllocationService extends CoreBaseService<Studen } else if (values[i].getText().equals(AccountTypeEnum.INSURANCE_ACCOUNT.getText())) { money = 2000000D; } - allocation.setInitialCapital(CollectionUtil.isNotEmpty(experimentalSystems) ? - new BigDecimal(money) : BigDecimal.ZERO); - allocation.setAvailableFunds(CollectionUtil.isNotEmpty(experimentalSystems) ? - new BigDecimal(money) : BigDecimal.ZERO); - allocation.setInitialInvestmentCapital(CollectionUtil.isNotEmpty(experimentalSystems) ? - new BigDecimal(money) : BigDecimal.ZERO); - allocation.setTotalAssetsOfSubAccounts(CollectionUtil.isNotEmpty(experimentalSystems) ? - new BigDecimal(money) : BigDecimal.ZERO); + allocation.setInitialCapital( + new BigDecimal(money)); + allocation.setAvailableFunds( + new BigDecimal(money)); + allocation.setInitialInvestmentCapital( + new BigDecimal(money)); + allocation.setTotalAssetsOfSubAccounts( + new BigDecimal(money)); } } } @@ -676,6 +682,44 @@ public class StudentAccountAssetAllocationService extends CoreBaseService<Studen investmentSystem.setUserId(allocation.getUserId()); studentAccountEquityInvestmentSystemService.add(investmentSystem); createBaseAccount(investmentSystem.getApplicationId(), oldUserId, 2000000D); + } else if (allocation.getApplicationId() == 113 && j == 1) { + Map<String, Object> students = getMapByStudentIdForForeign(studentId); + String className = students.get("classname").toString(); + String name = students.get("studentname").toString(); + Long classId = Long.valueOf(students.get("classid").toString()); + String majorName = students.get("majorname").toString(); + String studentNumber = students.get("studentno").toString(); + Double initialCapital = 2000000D; + + // 构建参数字符串 + String postData = "name=" + name + + "&className=" + className + + "&classId=" + classId + + "&majorName=" + majorName + + "&studentNumber=" + studentNumber + + "&initialCapital=" + initialCapital; + String result = sendPostRequest("http://120.79.54.255:8801/account/checkOrCreateForexSimulationUser", postData); + // 使用 Gson 将 JSON 字符串解析为一个 Map 对象 + Type type = new TypeToken<Map<String, Object>>() { + }.getType(); + Map<String, Object> jsonMap = new Gson().fromJson(result, type); + + StudentAccountForeignExchangeInvestmentSystem system = new StudentAccountForeignExchangeInvestmentSystem(); + system.setStudentId(studentId); + system.setUniversitiesCollegesId(universitiesColleges.getUniversitiesCollegesId()); + system.setState(2L); + system.setApplicationId(113L); + system.setAccountName("外汇模拟交易账户"); + system.setInitialCapital(new BigDecimal(initialCapital)); + system.setTotalAssets(jsonMap.get("totalAssets") == null ? BigDecimal.ZERO : new BigDecimal(jsonMap.get("totalAssets").toString())); + system.setNetAssetIncome(jsonMap.get("netAssetIncome") == null ? BigDecimal.ZERO : new BigDecimal(jsonMap.get("netAssetIncome").toString())); + system.setAvailableBalance(new BigDecimal(2000000)); + system.setCumulativeIncome(jsonMap.get("cumulativeProfitLoss") == null ? BigDecimal.ZERO : new BigDecimal(jsonMap.get("cumulativeProfitLoss").toString())); + system.setTotalAssetIncome(jsonMap.get("yield") == null ? BigDecimal.ZERO : new BigDecimal(jsonMap.get("yield").toString())); + system.setIsDel(1L); + system.setCreateTime(new Date()); + system.setIsInstitution(1L); + studentAccountForeignExchangeInvestmentSystemService.add(system); } } } @@ -699,10 +743,10 @@ public class StudentAccountAssetAllocationService extends CoreBaseService<Studen "[CreatorUserId]) VALUES (" + applicationId + ", " + initialCapital + ", " + initialCapital + ", " + initialCapital + ", " + initialCapital + ", 0, 0, 0, 0, 0, " + "0, 0, 0, 0, " + oldUserId + ", " + "'0', NULL, NULL, NULL, NULL, '" + formattedDate + "', " + oldUserId + ")"; - String sql1 = "INSERT INTO [dbo].[P2PAccount]([UserId], [Balance], [IsDeleted], [DeleterUserId], " + - "[DeletionTime], [LastModificationTime], [LastModifierUserId], [CreationTime], " + - "[CreatorUserId], [TotalInvestmentIncome]) VALUES ("+oldUserId+", "+initialCapital+", '0', NULL, NULL, " + - "'"+formattedDate+"', NULL, '"+formattedDate+"', "+oldUserId+", 0)"; + String sql1 = "INSERT INTO [dbo].[P2PAccount]([UserId], [Balance], [IsDeleted], [DeleterUserId], " + + "[DeletionTime], [LastModificationTime], [LastModifierUserId], [CreationTime], " + + "[CreatorUserId], [TotalInvestmentIncome]) VALUES (" + oldUserId + ", " + initialCapital + ", '0', NULL, NULL, " + + "'" + formattedDate + "', NULL, '" + formattedDate + "', " + oldUserId + ", 0)"; runJdbc(sql1); } else if (applicationId == 5L) { sql = "INSERT INTO [dbo].[ExaTheRaiseAssetAllocation]([ApplicationId], [InitialCapital], [InitialInvestmentCapital], " + @@ -715,8 +759,8 @@ public class StudentAccountAssetAllocationService extends CoreBaseService<Studen "NULL, NULL, NULL, NULL, '" + formattedDate + "', " + oldUserId + ")"; String sql1 = "INSERT INTO [dbo].[CFAccount]([UserId], [TotalInvestmentIncome], [Balance], " + "[IsDeleted], [DeleterUserId], [DeletionTime], [LastModificationTime], [LastModifierUserId], " + - "[CreationTime], [CreatorUserId]) VALUES ( "+oldUserId+", .00, "+initialCapital+", '0', NULL, NULL, '"+formattedDate+"', " + - "NULL, '"+formattedDate+"', NULL)"; + "[CreationTime], [CreatorUserId]) VALUES ( " + oldUserId + ", .00, " + initialCapital + ", '0', NULL, NULL, '" + formattedDate + "', " + + "NULL, '" + formattedDate + "', NULL)"; runJdbc(sql1); } else if (applicationId == 16L || applicationId == -16L) { Integer secType; @@ -858,9 +902,9 @@ public class StudentAccountAssetAllocationService extends CoreBaseService<Studen allocation.getInitialInvestmentCapital(), allocation.getInitialInvestmentCapital(), studentId); String sql = "update ExaPEVCAssetAllocation set FreeMoney =" + allocation.getAvailableFunds() + " where UserId = " + coreUser.getOldId() + ""; - try{ + try { runJdbc(sql); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } @@ -1088,5 +1132,14 @@ public class StudentAccountAssetAllocationService extends CoreBaseService<Studen return courseInfoService.getByIds(courseInfoIds); } + //查询对应用户缺的数据 + public List<StudentAccountAssetAllocation> getByStudentAndApplicationIsNotIn(Long studentId) { + return studentAccountAssetAllocationDao.getByStudentAndApplicationIsNotIn(studentId); + } + + public Map<String, Object> getMapByStudentIdForForeign(Long studentId) { + return studentAccountAssetAllocationDao.getMapByStudentIdForForeign(studentId); + } + } diff --git a/web/src/main/java/com/ibeetl/jlw/service/StudentAccountForeignExchangeInvestmentSystemService.java b/web/src/main/java/com/ibeetl/jlw/service/StudentAccountForeignExchangeInvestmentSystemService.java new file mode 100644 index 00000000..632bd19f --- /dev/null +++ b/web/src/main/java/com/ibeetl/jlw/service/StudentAccountForeignExchangeInvestmentSystemService.java @@ -0,0 +1,30 @@ +package com.ibeetl.jlw.service; + +import com.ibeetl.admin.core.service.CoreBaseService; +import com.ibeetl.jlw.dao.StudentAccountEquityInvestmentSystemDao; +import com.ibeetl.jlw.dao.StudentAccountForeignExchangeInvestmentSystemDao; +import com.ibeetl.jlw.entity.StudentAccountForeignExchangeInvestmentSystem; +import com.ibeetl.jlw.entity.StudentAccountMockTradingSystem; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +@Service +@Transactional +@Validated +public class StudentAccountForeignExchangeInvestmentSystemService extends CoreBaseService<StudentAccountForeignExchangeInvestmentSystem> { + + @Autowired + private StudentAccountForeignExchangeInvestmentSystemDao studentAccountForeignExchangeInvestmentSystemDao; + + public void add(StudentAccountForeignExchangeInvestmentSystem system) { + studentAccountForeignExchangeInvestmentSystemDao.insert(system); + } + + public StudentAccountForeignExchangeInvestmentSystem getByStudentId(Long studentId){ + return studentAccountForeignExchangeInvestmentSystemDao.getByStudentId(studentId); + + } + +} diff --git a/web/src/main/java/com/ibeetl/jlw/service/StudentService.java b/web/src/main/java/com/ibeetl/jlw/service/StudentService.java index 05485ae4..c1fe9b17 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/StudentService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/StudentService.java @@ -1792,4 +1792,12 @@ public class StudentService extends CoreBaseService<Student> { public void deleteById1(Long studentId) { sqlManager.deleteById(Student.class, studentId); } + //查询资产数据没有32条的数据 + public List<Student> getNoAssetStudent() { + return studentDao.getNoAssetStudent(); + } + + public Map<String,Object> getMapByStudentIdForForeign(Long studentId){ + return studentDao.getMapByStudentIdForForeign(studentId); + } } \ No newline at end of file diff --git a/web/src/main/java/com/ibeetl/jlw/service/UniversitiesCollegesJurisdictionExperimentalSystemService.java b/web/src/main/java/com/ibeetl/jlw/service/UniversitiesCollegesJurisdictionExperimentalSystemService.java index 408df3cf..03b62bfb 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/UniversitiesCollegesJurisdictionExperimentalSystemService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/UniversitiesCollegesJurisdictionExperimentalSystemService.java @@ -187,4 +187,9 @@ public class UniversitiesCollegesJurisdictionExperimentalSystemService extends C public List<UniversitiesCollegesJurisdictionExperimentalSystem> getAllOverdueAuthByBeforeAndAfterDays(Long beforeDays, Long afterDays, Long orgId) { return universitiesCollegesJurisdictionExperimentalSystemDao.getAllOverdueAuthByBeforeAndAfterDays(beforeDays, afterDays, orgId); } + + //查询授权了外汇模拟交易的学校数据 + public List<UniversitiesCollegesJurisdictionExperimentalSystem> forexSimulationTradingAuthorizationSchoolDataInterface(){ + return universitiesCollegesJurisdictionExperimentalSystemDao.forexSimulationTradingAuthorizationSchoolDataInterface(); + } } \ No newline at end of file diff --git a/web/src/main/java/com/ibeetl/jlw/web/AccountController.java b/web/src/main/java/com/ibeetl/jlw/web/AccountController.java index 9dd1f58a..38518782 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/AccountController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/AccountController.java @@ -210,10 +210,7 @@ public class AccountController { if (applicationId == -1) { allocationQuery.setApplicationId(Long.valueOf(-1)); allocationQuery.setName(AccountTypeEnum.BANK_ACCOUNT); - } else if (applicationId == -2) { - allocationQuery.setApplicationId(Long.valueOf(-2)); - allocationQuery.setName(AccountTypeEnum.CASH_ACCOUNT); - } else if (applicationId == 4) { + } else if (applicationId == 4) { allocationQuery.setApplicationId(Long.valueOf(4)); allocationQuery.setName(AccountTypeEnum.P2P_ACCOUNT); StudentAccountCrowdfundingSystem info = studentAccountCrowdfundingSystemService.getInfo(student.getStudentId()); @@ -1346,4 +1343,10 @@ public class AccountController { return JsonResult.success(); } + @ApiOperation("根据学校id查询用户数据") + @GetMapping("getUsersBySchoolId.json") + public JsonResult<List<Map<String, Object>>> getUsersBySchoolId(Long schoolId){ + return JsonResult.success(userService.getUsersBySchoolId(schoolId)); + } + } diff --git a/web/src/main/java/com/ibeetl/jlw/web/TestController.java b/web/src/main/java/com/ibeetl/jlw/web/TestController.java index 646c75e3..6f8397e6 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TestController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TestController.java @@ -6,9 +6,11 @@ import cn.jlw.oldAliPay.pc.util.Stringutils; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; +import com.google.gson.reflect.TypeToken; import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.service.CorePlatformService; import com.ibeetl.admin.core.service.CoreUserService; +import com.ibeetl.jlw.dao.StudentAccountAssetAllocationDao; import com.ibeetl.jlw.entity.*; import com.ibeetl.jlw.entity.dto.CreateUserDTO; import com.ibeetl.jlw.enums.AccountTypeEnum; @@ -25,6 +27,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.lang.reflect.Type; import java.math.BigDecimal; import java.sql.*; import java.text.SimpleDateFormat; @@ -35,6 +38,8 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import static com.ibeetl.jlw.service.StudentAccountAssetAllocationService.sendPostRequest; + @Api(tags = "数据迁移") @RestController @RequestMapping("test") @@ -60,7 +65,8 @@ public class TestController { private UniversitiesCollegesJurisdictionExperimentalSystemService universitiesCollegesJurisdictionExperimentalSystemService; @Autowired private StudentAccountAssetAllocationService studentAccountAssetAllocationService; - + @Autowired + private StudentAccountForeignExchangeInvestmentSystemService studentAccountForeignExchangeInvestmentSystemService; @Autowired private StudentAccountP2pSystemService studentAccountP2pSystemService; @Autowired @@ -913,8 +919,8 @@ public class TestController { UniversitySystem system = universitySystemService.getById(schoolClass.getUniversitySystemId()); System.out.println("修改班级" + i + "/" + classes.size()); Connection connection = openConn(); - if(schoolClass.getClassName().equals("产品演示1班")){ - int a = 0; + if (schoolClass.getClassName().equals("产品演示1班")) { + int a = 0; } String sql = "select * from EduClasses where Name = '" + schoolClass.getClassName() + "' and IsDeleted = 0 and majorId = " + system.getOldId(); PreparedStatement ps = connection.prepareStatement(sql); @@ -1013,6 +1019,7 @@ public class TestController { System.out.println("线程结束"); } } + // 将列表分成几组 private List<List<Student>> partitionList(List<Student> list, int partitions) { List<List<Student>> result = new ArrayList<>(); @@ -1154,7 +1161,7 @@ public class TestController { Integer applicationId = resultSet.getInt("ApplicationId"); - if (applicationId.equals("-1")) { + if (applicationId.equals("-2")) { continue; } String applicationName = resultSet.getString("name"); @@ -1175,9 +1182,6 @@ public class TestController { if (applicationId == -1) { allocationQuery.setApplicationId(Long.valueOf(-1)); allocationQuery.setName(AccountTypeEnum.BANK_ACCOUNT); - } else if (applicationId == -2) { - allocationQuery.setApplicationId(Long.valueOf(-2)); - allocationQuery.setName(AccountTypeEnum.CASH_ACCOUNT); } else if (applicationId == 4) { allocationQuery.setApplicationId(Long.valueOf(4)); allocationQuery.setName(AccountTypeEnum.P2P_ACCOUNT); @@ -1526,4 +1530,129 @@ public class TestController { } } -} + @ApiOperation("调整用户资产数据") + @PostMapping("adjustUserAssetsData") + public void adjustUserAssetsData() { + List<Student> students = studentService.getNoAssetStudent(); + if (students != null && students.size() > 0) { + int numThreads = Runtime.getRuntime().availableProcessors(); // 获取可用处理器数量作为线程数 + ExecutorService executor = Executors.newFixedThreadPool(numThreads); + int chunkSize = students.size() / numThreads; + int fromIndex = 0; + int toIndex = chunkSize; + + for (int i = 0; i < numThreads; i++) { + List<Student> chunk = students.subList(fromIndex, toIndex); + executor.execute(() -> { + runTask1(chunk); + }); + fromIndex = toIndex; + toIndex = (i == numThreads - 2) ? students.size() : toIndex + chunkSize; + } + + executor.shutdown(); + while (!executor.isTerminated()) { + // Wait until all threads finish + } + } + System.out.println("线程结束"); + } + + + private void runTask1(List<Student> students) { + int processedCount = 0; + for (Student student : students) { + processedCount++; + System.out.println(Thread.currentThread().getName() + ":修改用户" + student.getStudentSn() + ",处理到第" + processedCount + "/" + students.size()); + List<StudentAccountAssetAllocation> applicationIsNotIn = studentAccountAssetAllocationService.getByStudentAndApplicationIsNotIn(student.getStudentId()); + for (StudentAccountAssetAllocation assetAllocation : applicationIsNotIn) { + StudentAccountAssetAllocationQuery allocation = new StudentAccountAssetAllocationQuery(); + allocation.setStudentId(student.getStudentId()); + allocation.setApplicationId(assetAllocation.getApplicationId()); + UniversitiesColleges colleges = universitiesCollegesService.getByOrgId(student.getOrgId()); + allocation.setUniversitiesCollegesId(colleges.getUniversitiesCollegesId()); + allocation.setName(assetAllocation.getName()); + allocation.setState(1); + BigDecimal money = new BigDecimal(2000000D); + allocation.setInitialCapital(money); + allocation.setAvailableFunds(money); + allocation.setIntoAccount(AccountTypeEnum.BANK_ACCOUNT); + allocation.setTransferinAmount(BigDecimal.ZERO); + allocation.setTransferOutAmount(BigDecimal.ZERO); + allocation.setInitialInvestmentCapital(money); + allocation.setBorrowedFunds(BigDecimal.ZERO); + allocation.setInvestmentFunds(BigDecimal.ZERO); + allocation.setInvestmentValue(BigDecimal.ZERO); + allocation.setInvestmentIncome(BigDecimal.ZERO); + allocation.setTotalAssetsOfSubAccounts(money); + allocation.setAssetInvestment(BigDecimal.ZERO); + allocation.setReturnOnEquity(BigDecimal.ZERO); + allocation.setIsUpdate(2); + allocation.setAmountFrozen(BigDecimal.ZERO); + allocation.setUpdateVersion(Long.valueOf(-1)); + allocation.setIsDel(1); + allocation.setIsInstitution(1); + studentAccountAssetAllocationService.add(allocation); + } + } + } + + @ApiOperation("调整用户外汇账户数据") + @PostMapping("adjustUserFundsData") + public void adjustUserFundsData() { + List<UniversitiesCollegesJurisdictionExperimentalSystem> systems = universitiesCollegesJurisdictionExperimentalSystemService.forexSimulationTradingAuthorizationSchoolDataInterface(); + if (systems != null && systems.size() > 0) { + for (UniversitiesCollegesJurisdictionExperimentalSystem system : systems) { + UniversitiesColleges universitiesColleges = universitiesCollegesService.getById(system.getUniversitiesCollegesId()); + List<Student> students = studentService.getValuesByOrgId(universitiesColleges.getOrgId()); + if (students == null || students.size() == 0) continue; + ; + for (Student student : students) { + + StudentAccountForeignExchangeInvestmentSystem foreignExchangeInvestmentSystem = studentAccountForeignExchangeInvestmentSystemService.getByStudentId(student.getStudentId()); + if(foreignExchangeInvestmentSystem != null){ + continue; + } + + Map<String, Object> map = studentAccountAssetAllocationService.getMapByStudentIdForForeign(student.getStudentId()); + String className = map.get("classname").toString(); + String name = map.get("studentname").toString(); + Long classId = Long.valueOf(map.get("classid").toString()); + String majorName = map.get("majorname").toString(); + String studentNumber = map.get("studentno").toString(); + Double initialCapital = 2000000D; + + // 构建参数字符串 + String postData = "name=" + name + + "&className=" + className + + "&classId=" + classId + + "&majorName=" + majorName + + "&studentNumber=" + studentNumber + + "&initialCapital=" + initialCapital; + String result = sendPostRequest("http://localhost:8801/account/checkOrCreateForexSimulationUser", postData); + // 使用 Gson 将 JSON 字符串解析为一个 Map 对象 + Type type = new TypeToken<Map<String, Object>>() { + }.getType(); + Map<String, Object> jsonMap = new Gson().fromJson(result, type); + + StudentAccountForeignExchangeInvestmentSystem system1 = new StudentAccountForeignExchangeInvestmentSystem(); + system1.setStudentId(student.getStudentId()); + system1.setUniversitiesCollegesId(universitiesColleges.getUniversitiesCollegesId()); + system1.setState(2L); + system1.setApplicationId(113L); + system1.setAccountName("外汇模拟交易账户"); + system1.setInitialCapital(new BigDecimal(initialCapital)); + system1.setTotalAssets(jsonMap.get("totalAssets") == null ? BigDecimal.ZERO : new BigDecimal(jsonMap.get("totalAssets").toString())); + system1.setNetAssetIncome(jsonMap.get("netAssetIncome") == null ? BigDecimal.ZERO : new BigDecimal(jsonMap.get("netAssetIncome").toString())); + system1.setAvailableBalance(new BigDecimal(2000000)); + system1.setCumulativeIncome(jsonMap.get("cumulativeProfitLoss") == null ? BigDecimal.ZERO : new BigDecimal(jsonMap.get("cumulativeProfitLoss").toString())); + system1.setTotalAssetIncome(jsonMap.get("yield") == null ? BigDecimal.ZERO : new BigDecimal(jsonMap.get("yield").toString())); + system1.setIsDel(1L); + system1.setCreateTime(new Date()); + system1.setIsInstitution(1L); + studentAccountForeignExchangeInvestmentSystemService.add(system1); + } + } + } + } +} \ No newline at end of file diff --git a/web/src/main/resources/sql/jlw/student.md b/web/src/main/resources/sql/jlw/student.md index a656ce6c..f90d67c7 100644 --- a/web/src/main/resources/sql/jlw/student.md +++ b/web/src/main/resources/sql/jlw/student.md @@ -2250,4 +2250,13 @@ select * from student where old_id = #oldId# getStudentByStudentNo === -select * from student where student_sn =#studentNo# \ No newline at end of file +select * from student where student_sn =#studentNo# + + +getNoAssetStudent +=== +select student.* +from student join (select count(1) as count1, student_account_asset_allocation.student_id +from student_account_asset_allocation +group by student_account_asset_allocation.student_id) a on student.student_id=a.student_id where a.count1<32 + diff --git a/web/src/main/resources/sql/jlw/studentAccountAssetAllocation.md b/web/src/main/resources/sql/jlw/studentAccountAssetAllocation.md index 99d76dd2..948a9170 100644 --- a/web/src/main/resources/sql/jlw/studentAccountAssetAllocation.md +++ b/web/src/main/resources/sql/jlw/studentAccountAssetAllocation.md @@ -787,4 +787,26 @@ getInfo getInfoByStudentIdAnIsInstitution === -select * from student_account_asset_allocation where student_id=#studentId# and is_institution =1 \ No newline at end of file +select * from student_account_asset_allocation where student_id=#studentId# and is_institution =1 + + +getByStudentAndApplicationIsNotIn +=== +select * +from student_account_asset_allocation +where student_id = 10980 +and (application_id not in (select application_id from student_account_asset_allocation where student_id = #studentId#) or +application_id is null) +and is_institution = 1 + +getMapByStudentIdForForeign +=== +select s.student_name as studentname, +sc.class_name as classname, +sc.class_id classid, +sy.university_system_name as majorname, +s.student_sn studentno +from student s +join school_class sc on s.class_id = sc.class_id +join university_system sy on sc.university_system_id = sy.university_system_id +where student_id =#studentId# \ No newline at end of file diff --git a/web/src/main/resources/sql/jlw/studentAccountForeignExchangeInvestmentSystem.md b/web/src/main/resources/sql/jlw/studentAccountForeignExchangeInvestmentSystem.md index be44ad02..902cf427 100644 --- a/web/src/main/resources/sql/jlw/studentAccountForeignExchangeInvestmentSystem.md +++ b/web/src/main/resources/sql/jlw/studentAccountForeignExchangeInvestmentSystem.md @@ -203,3 +203,7 @@ getValuesByQueryNotWithPermission @if(!isEmpty(orgIdPlural)){ and find_in_set(t.org_id,#orgIdPlural#) @} + +getByStudentId +=== +select * from student_account_foreign_exchange_investment_system where student_id =#studentId# \ No newline at end of file diff --git a/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionExperimentalSystem.md b/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionExperimentalSystem.md index 5941a548..8d41eab9 100644 --- a/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionExperimentalSystem.md +++ b/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionExperimentalSystem.md @@ -264,4 +264,7 @@ and find_in_set(a.type_id,#typeIds#) @} AND a.use_end_time >= NOW() - + +forexSimulationTradingAuthorizationSchoolDataInterface +=== +select * from universities_colleges_jurisdiction_experimental_system where type_id=113 \ No newline at end of file