diff --git a/web/src/main/java/cn/jlw/web/WebApplication.java b/web/src/main/java/cn/jlw/web/WebApplication.java index edd20ea..adba55b 100644 --- a/web/src/main/java/cn/jlw/web/WebApplication.java +++ b/web/src/main/java/cn/jlw/web/WebApplication.java @@ -10,9 +10,11 @@ import org.springframework.boot.web.servlet.support.SpringBootServletInitializer import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.WebApplicationInitializer; +@EnableScheduling @SpringBootApplication @EnableCaching @ComponentScan(basePackages = {"cn.jlw", "com.ibeetl.admin", "com.ibeetl.jlw"}) diff --git a/web/src/main/java/com/ibeetl/jlw/dao/ExaminationFinancialsDao.java b/web/src/main/java/com/ibeetl/jlw/dao/ExaminationFinancialsDao.java deleted file mode 100644 index 88aaa7f..0000000 --- a/web/src/main/java/com/ibeetl/jlw/dao/ExaminationFinancialsDao.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.ibeetl.jlw.dao; - -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -import com.ibeetl.jlw.entity.*; -import com.ibeetl.jlw.web.query.ExaminationFinancialsQuery; - -import com.ibeetl.jlw.web.query.UsersQuery; -import org.beetl.sql.core.annotatoin.SqlResource; -import org.beetl.sql.core.mapper.BaseMapper; -import org.beetl.sql.core.engine.PageQuery; -import org.springframework.stereotype.Repository; - - -/** - * ExaminationFinancials Dao - */ -@SqlResource("jlw.examinationFinancials") -@Repository -public interface ExaminationFinancialsDao extends BaseMapper { - public PageQuery queryByCondition(PageQuery query); - - public void deleteExaminationFinancialsByIds(String ids); - - public List getValuesByQuery(ExaminationFinancialsQuery examinationFinancialsQuery); - - public UserExaminations getExaminationsAndUserExaminations(Users users, Integer type); - - public ExaminationFinancials getLastExaminationFinancials(Long userId, Integer type); - - public ExaminationFinancials examinationFinancialByQuery(Long userId, Integer type); - - ExaminationFinancials getBalanceProductAssets(Long examinationId, Long instanceId, String roleId); - - void updateBalanceProductAssets(ExaminationFinancials financials); - - void incrementBalance(Long examinationId, Long instanceId, String roleId, BigDecimal amount); - - void decrementBalance(Long examinationId, Long instanceId, String roleId, BigDecimal amount); - - void incrementProductAssets(Long examinationId, Long instanceId, String roleId, BigDecimal amount); - - void decrementProductAssets(Long examinationId, Long instanceId, String roleId, BigDecimal amount); - -} diff --git a/web/src/main/java/com/ibeetl/jlw/dao/ExaminationInstancesDao.java b/web/src/main/java/com/ibeetl/jlw/dao/ExaminationInstancesDao.java index 97b7ad0..84acfe6 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/ExaminationInstancesDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/ExaminationInstancesDao.java @@ -1,14 +1,11 @@ package com.ibeetl.jlw.dao; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; import com.ibeetl.jlw.entity.*; -import com.ibeetl.jlw.web.query.ExaminationInstancesQuery; import org.beetl.sql.core.annotatoin.SqlResource; import org.beetl.sql.core.mapper.BaseMapper; -import org.beetl.sql.core.engine.PageQuery; import org.springframework.stereotype.Repository; @@ -18,13 +15,18 @@ import org.springframework.stereotype.Repository; @SqlResource("jlw.examinationInstances") @Repository public interface ExaminationInstancesDao extends BaseMapper { - PageQuery queryByCondition(PageQuery query); - void deleteExaminationInstancesByIds(String ids); - - List getValuesByQuery(ExaminationInstancesQuery examinationInstancesQuery); ExaminationInstances examinationFinancialByQuery(Long teamId, Long examinationId, Long flowId); void finishStep(Long id, Integer step); + + ExaminationInstances getLastExaminationFinancials(Long userId, Integer type); + + void incrementBalance(Long examinationId, Long instanceId, String roleId, BigDecimal amount); + + void decrementBalance(Long examinationId, Long instanceId, String roleId, BigDecimal amount); + + void incrementProductAssets(Long examinationId, Long instanceId, String roleId, BigDecimal amount); + } diff --git a/web/src/main/java/com/ibeetl/jlw/dao/UserExaminationsDao.java b/web/src/main/java/com/ibeetl/jlw/dao/UserExaminationsDao.java index e37734c..c8eae07 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/UserExaminationsDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/UserExaminationsDao.java @@ -48,4 +48,6 @@ public interface UserExaminationsDao extends BaseMapper { int hasZeroScores(Long examinationId); List notParticipatingUsers(Long examinationId); + + List practiceModeIntegralStatistics(Long classId); } diff --git a/web/src/main/java/com/ibeetl/jlw/entity/ExaminationFinancials.java b/web/src/main/java/com/ibeetl/jlw/entity/ExaminationFinancials.java deleted file mode 100644 index 250b24a..0000000 --- a/web/src/main/java/com/ibeetl/jlw/entity/ExaminationFinancials.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.ibeetl.jlw.entity; - -import com.ibeetl.admin.core.entity.BaseEntity; -import com.ibeetl.admin.core.util.ValidateConfig; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.beetl.sql.core.annotatoin.AutoID; -import org.beetl.sql.core.annotatoin.SeqID; - -import javax.validation.constraints.NotNull; -import java.math.BigDecimal; -import java.util.Date; - -/* - * 融资申请方的资金概况 //流程基础表,所有流程公用 - * gen by Spring Boot2 Admin 2022-07-20 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class ExaminationFinancials extends BaseEntity { - - @NotNull(message = "ID不能为空", groups = ValidateConfig.UPDATE.class) - @SeqID(name = ORACLE_CORE_SEQ_NAME) - @AutoID - - private Long id; - - @ApiModelProperty("开始时间") - private Date createdAt; - - @ApiModelProperty("结束时间") - private Date updatedAt; - - private String data; //无 - - //初始资金 - - @ApiModelProperty("初始资金") - private BigDecimal initBalance; - - //可用资金 - - @ApiModelProperty("可用资金") - private BigDecimal balance; - - //存货价值 - @ApiModelProperty("存货价值") - private BigDecimal productAssets; - - //总资产 - @ApiModelProperty("总资产") - private BigDecimal totalBalance; - - //资产增长率 - - @ApiModelProperty("资产增长率") - private BigDecimal raiseRate; - - //资产增长率排名 - - @ApiModelProperty("资产增长率排名") - private Integer raiseOrders; - - @ApiModelProperty("资产概况 0 练习 1 实训") - private Integer type; - - @ApiModelProperty("智云平台用户id") - private Long userId; - - @ApiModelProperty("考核id") - private Long examinationId; - - @ApiModelProperty("角色id") - private Long roleId; - - -} diff --git a/web/src/main/java/com/ibeetl/jlw/entity/ExaminationInstances.java b/web/src/main/java/com/ibeetl/jlw/entity/ExaminationInstances.java index b64176a..21dc353 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/ExaminationInstances.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/ExaminationInstances.java @@ -2,12 +2,14 @@ package com.ibeetl.jlw.entity; import com.ibeetl.admin.core.entity.BaseEntity; import com.ibeetl.admin.core.util.ValidateConfig; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import org.beetl.sql.core.annotatoin.AutoID; import org.beetl.sql.core.annotatoin.SeqID; import javax.validation.constraints.NotNull; +import java.math.BigDecimal; import java.util.Date; /* @@ -21,35 +23,48 @@ public class ExaminationInstances extends BaseEntity{ @NotNull(message = "ID不能为空", groups =ValidateConfig.UPDATE.class) @SeqID(name = ORACLE_CORE_SEQ_NAME) @AutoID - private Long id; - - private Date createdAt ; - - private Date updatedAt ; + private String data ; - - private String data ; //无 - - //实训id + @ApiModelProperty("实训id") private Long examinationId ; - - //业务类型id + + @ApiModelProperty("业务类型id") private Long flowId ; - - // 操作到第几步 - private Integer finishStep ; - //1:已提交实训; + @ApiModelProperty("操作到第几步") + private Integer finishStep ; + @ApiModelProperty("1:已提交实训;") private Integer status ; - //0:是个人,非0:团队id + @ApiModelProperty("0:是个人,非0:团队id") private Long teamId ; - - public ExaminationInstances(){ - } + + //初始资金 + @ApiModelProperty("初始资金") + private BigDecimal initBalance; + + //可用资金 + @ApiModelProperty("可用资金") + private BigDecimal balance; + + //存货价值 + @ApiModelProperty("存货价值") + private BigDecimal productAssets; + + //总资产 + @ApiModelProperty("总资产") + private BigDecimal totalBalance; + + //资产增长率 + @ApiModelProperty("资产增长率") + private BigDecimal raiseRate; + + //资产增长率排名 + @ApiModelProperty("资产增长率排名") + private Integer raiseOrders; } diff --git a/web/src/main/java/com/ibeetl/jlw/entity/UserExaminations.java b/web/src/main/java/com/ibeetl/jlw/entity/UserExaminations.java index cc37ed0..072d633 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/UserExaminations.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/UserExaminations.java @@ -2,6 +2,7 @@ package com.ibeetl.jlw.entity; import com.ibeetl.admin.core.entity.BaseEntity; import com.ibeetl.admin.core.util.ValidateConfig; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import org.beetl.sql.core.annotatoin.AutoID; @@ -80,4 +81,8 @@ public class UserExaminations extends BaseEntity { private Date updatedAt; + //实训模式:0:个人;1:班级; + @ApiModelProperty("实训模式 0 个人 1 团队") + private Integer mode; + } diff --git a/web/src/main/java/com/ibeetl/jlw/entity/Users.java b/web/src/main/java/com/ibeetl/jlw/entity/Users.java index a949245..ff01a8b 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/Users.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/Users.java @@ -12,6 +12,7 @@ import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.Date; import java.util.List; +import java.util.Objects; /* * @@ -106,7 +107,7 @@ public class Users extends BaseEntity { * @return */ public boolean isTeacher() { - return this.type == 3; + return Objects.equals(this.type, 3); } diff --git a/web/src/main/java/com/ibeetl/jlw/flow/bankacceptancebill/service/BankAcceptanceBillService.java b/web/src/main/java/com/ibeetl/jlw/flow/bankacceptancebill/service/BankAcceptanceBillService.java index 7ad79b9..306d30f 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/bankacceptancebill/service/BankAcceptanceBillService.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/bankacceptancebill/service/BankAcceptanceBillService.java @@ -7,7 +7,6 @@ import com.ibeetl.jlw.flow.bankacceptancebill.dao.BankAcceptanceBillDao; import com.ibeetl.jlw.flow.bankacceptancebill.entity.BankAcceptanceBill; import com.ibeetl.jlw.flow.financings.entity.Financings; import com.ibeetl.jlw.flow.financings.service.FinancingsService; -import com.ibeetl.jlw.service.ExaminationFinancialsService; import com.ibeetl.jlw.service.ExaminationInstancesService; import org.beetl.sql.core.engine.PageQuery; import org.springframework.beans.factory.annotation.Autowired; @@ -28,9 +27,6 @@ public class BankAcceptanceBillService extends CoreBaseService> randomSellPrice() { + productSellPriceTask.updateSellPrice(); + return JsonResult.success(); + } + /** * 根据购销合同查询产品列表 */ diff --git a/web/src/main/java/com/ibeetl/jlw/flow/contractsproducts/dao/ContractsProductsDao.java b/web/src/main/java/com/ibeetl/jlw/flow/contractsproducts/dao/ContractsProductsDao.java index 87b7885..5f46791 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/contractsproducts/dao/ContractsProductsDao.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/contractsproducts/dao/ContractsProductsDao.java @@ -19,9 +19,10 @@ public interface ContractsProductsDao extends BaseMapper { List getList(ContractsProducts queryParam); - BigDecimal getHadPickupAmount(Long contractId, Long protocolId); + BigDecimal getCurrentAmount(Long contractId, Long protocolId); + BigDecimal getPickupAmountByIds(List ids); void updatePickupStatus(Long pickupProductId, Integer pickupStatus); diff --git a/web/src/main/java/com/ibeetl/jlw/flow/contractsproducts/service/ContractsProductsService.java b/web/src/main/java/com/ibeetl/jlw/flow/contractsproducts/service/ContractsProductsService.java index f4191cb..9d4dd1b 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/contractsproducts/service/ContractsProductsService.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/contractsproducts/service/ContractsProductsService.java @@ -38,6 +38,17 @@ public class ContractsProductsService extends CoreBaseService return hadPickupAmount == null ? BigDecimal.ZERO : hadPickupAmount; } + /** + * 获取当天商品总售价 + * @param contractId 合同ID + * @param protocolId 协议ID + * @return 商品总售价 + */ + public BigDecimal getCurrentAmount(Long contractId, Long protocolId) { + final BigDecimal amount = contractsProductsDao.getCurrentAmount(contractId, protocolId); + return amount == null ? BigDecimal.ZERO : amount; + } + public BigDecimal getPickupAmountByIds(List ids) { final BigDecimal amount = contractsProductsDao.getPickupAmountByIds(ids); diff --git a/web/src/main/java/com/ibeetl/jlw/flow/financings/service/FinancingsService.java b/web/src/main/java/com/ibeetl/jlw/flow/financings/service/FinancingsService.java index 3f6a52d..f036af6 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/financings/service/FinancingsService.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/financings/service/FinancingsService.java @@ -12,7 +12,6 @@ import com.ibeetl.jlw.flow.recommendsupplier.entity.RecommendSupplier; import com.ibeetl.jlw.flow.recommendsupplier.service.RecommendSupplierService; import com.ibeetl.jlw.flow.repayments.entity.Repayments; import com.ibeetl.jlw.flow.repayments.service.RepaymentsService; -import com.ibeetl.jlw.service.ExaminationFinancialsService; import com.ibeetl.jlw.service.ExaminationInstancesService; import com.ibeetl.jlw.service.MaterialsService; import jodd.util.StringUtil; @@ -42,9 +41,6 @@ public class FinancingsService extends CoreBaseService { @Autowired private RecommendSupplierService recommendSupplierService; - @Autowired - private ExaminationFinancialsService examinationFinancialsService; - @Autowired private ExaminationInstancesService examinationInstancesService; @@ -349,15 +345,15 @@ public class FinancingsService extends CoreBaseService { } // 修改卖方资金 final BigDecimal sub = financings.getFkAmount().subtract(financings.getApplyPoundage()); - examinationFinancialsService.incrementBalance(financings.getExaminationId(), financings.getInstanceId(), "2", sub); // 卖方资金增加 + examinationInstancesService.incrementBalance(financings.getExaminationId(), financings.getInstanceId(), "2", sub); // 卖方资金增加 if (Objects.equals(financings.getFinancingType(), 3) || Objects.equals(financings.getFinancingType(), 4) || Objects.equals(financings.getFinancingType(), 5)) { // 应收账款质押融资、正向保理 和 反向保理 买方支付合同金额与应付账款金额(即卖方的应收账款金额)之间的差额部分给卖方(买方资金减少,卖方资金增加)。 final BigDecimal subAmount = financings.getContractAmount().subtract(financings.getYfzkAmount()); - examinationFinancialsService.decrementBalance(financings.getExaminationId(), financings.getInstanceId(), "1", subAmount); // 买方资金减少 - examinationFinancialsService.incrementBalance(financings.getExaminationId(), financings.getInstanceId(), "2", subAmount); // 卖方资金增加 + examinationInstancesService.decrementBalance(financings.getExaminationId(), financings.getInstanceId(), "1", subAmount); // 买方资金减少 + examinationInstancesService.incrementBalance(financings.getExaminationId(), financings.getInstanceId(), "2", subAmount); // 卖方资金增加 } // 推进流程 @@ -443,7 +439,7 @@ public class FinancingsService extends CoreBaseService { this.updateTemplate(dto); final BigDecimal sub = single.getYfzkAmount().subtract(single.getFkAmount()).subtract(single.getInterestAmount()); - examinationFinancialsService.incrementBalance(single.getExaminationId(), single.getInstanceId(), "2", sub); // 卖方资金增加 + examinationInstancesService.incrementBalance(single.getExaminationId(), single.getInstanceId(), "2", sub); // 卖方资金增加 if (dto.getStep() != null) { examinationInstancesService.finishStep(single.getInstanceId(), dto.getStep()); } @@ -663,7 +659,7 @@ public class FinancingsService extends CoreBaseService { dto.setUpdatedAt(new Date()); // 买方资金减少 - examinationFinancialsService.decrementBalance(single.getExaminationId(), + examinationInstancesService.decrementBalance(single.getExaminationId(), single.getInstanceId(), "1", dto.getBailAmount()); // 推进流程进度 diff --git a/web/src/main/java/com/ibeetl/jlw/flow/operatescores/dao/OperateScoresDao.java b/web/src/main/java/com/ibeetl/jlw/flow/operatescores/dao/OperateScoresDao.java index 0bff36a..beb657a 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/operatescores/dao/OperateScoresDao.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/operatescores/dao/OperateScoresDao.java @@ -5,6 +5,8 @@ import org.beetl.sql.core.annotatoin.SqlResource; import org.beetl.sql.core.mapper.BaseMapper; import org.springframework.stereotype.Repository; +import java.util.List; + /* * * gen by beetlsql3 mapper 2023-04-17 @@ -14,4 +16,5 @@ import org.springframework.stereotype.Repository; @Repository public interface OperateScoresDao extends BaseMapper { int totalDeductionScore(Long userExaminationId); + List getOperateScoreByType(Long userExaminationId, List types); } diff --git a/web/src/main/java/com/ibeetl/jlw/flow/operatescores/service/OperateScoresService.java b/web/src/main/java/com/ibeetl/jlw/flow/operatescores/service/OperateScoresService.java index 255da3d..cbb8e02 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/operatescores/service/OperateScoresService.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/operatescores/service/OperateScoresService.java @@ -1,7 +1,9 @@ package com.ibeetl.jlw.flow.operatescores.service; import com.ibeetl.admin.core.service.CoreBaseService; +import com.ibeetl.jlw.entity.UserExaminations; import com.ibeetl.jlw.flow.operatescores.dao.OperateScoresDao; +import com.ibeetl.jlw.flow.operatescores.entity.FlowDeductionPoint; import com.ibeetl.jlw.flow.operatescores.entity.OperateScores; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -17,11 +19,30 @@ public class OperateScoresService extends CoreBaseService { private OperateScoresDao operateScoresDao; public static final Map SCORE_MAP = new HashMap<>(); + public static final Map FLOW_SCORE_POINT = new HashMap<>(); public int totalDeductionScore(Long userExaminationId) { return operateScoresDao.totalDeductionScore(userExaminationId); } + List getOperateScoreByType(Long userExaminationId, List types) { + return operateScoresDao.getOperateScoreByType(userExaminationId, types); + } + + public List getDeductScores(Long userExaminationId) { + return this.operateScoresDao.createLambdaQuery() + .andEq(OperateScores::getUserExaminationId, userExaminationId) + .andGreat(OperateScores::getScore, 0).select(); + } + + public int getDeductionScoreByFinishStep(Long userExaminationId, Long flowId, Integer finishedStep) { + + final FlowDeductionPoint flowDeductionPoint = FLOW_SCORE_POINT.get(flowId); + final List operateScoreByType = getOperateScoreByType(userExaminationId, flowDeductionPoint.getDeductionItems()); + // 剩余未完成流程节点扣操作分 operateScore + return flowDeductionPoint.getDeductionScoreByFinishStep(finishedStep, operateScoreByType); + } + @Transactional public Map verifyAnswer(OperateScores scores) { final List incorrectAnswers = scores.getIncorrectAnswers(); @@ -72,21 +93,22 @@ public class OperateScoresService extends CoreBaseService { static { + // 质物清单 流程第6步 SCORE_MAP.put("chzy_zwqd_1", 3); SCORE_MAP.put("chzy_zwqd_2", 3); SCORE_MAP.put("chzy_zwqd_3", 3); - SCORE_MAP.put("chzy_zwqd_4", 3); + SCORE_MAP.put("chzy_zwqd_4", 2); SCORE_MAP.put("chzy_zwqd_5", 3); SCORE_MAP.put("chzy_zwqd_6", 3); SCORE_MAP.put("chzy_zwqd_7", 3); - // 提货申请书 + // 提货申请书 流程第11步 SCORE_MAP.put("chzy_thsqs_1", 3); SCORE_MAP.put("chzy_thsqs_2", 3); SCORE_MAP.put("chzy_thsqs_3", 2); SCORE_MAP.put("chzy_thsqs_4", 3); SCORE_MAP.put("chzy_thsqs_5", 2); SCORE_MAP.put("chzy_thsqs_6", 3); - // 提货通知书 + // 提货通知书 流程第12步 SCORE_MAP.put("chzy_thtzs_1", 3); SCORE_MAP.put("chzy_thtzs_2", 3); SCORE_MAP.put("chzy_thtzs_3", 2); @@ -94,7 +116,7 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("chzy_thtzs_5", 3); SCORE_MAP.put("chzy_thtzs_6", 2); SCORE_MAP.put("chzy_thtzs_7", 3); - // 提货通知书(回执) + // 提货通知书(回执) 流程第13步 SCORE_MAP.put("chzy_thtzshz_1", 3); SCORE_MAP.put("chzy_thtzshz_2", 3); SCORE_MAP.put("chzy_thtzshz_3", 3); @@ -103,17 +125,19 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("chzy_thtzshz_6", 3); SCORE_MAP.put("chzy_thtzshz_7", 2); SCORE_MAP.put("chzy_thtzshz_8", 3); - // 非单据扣分类 + // 非单据扣分类 流程第1步 SCORE_MAP.put("chzy_normal_1", 3); SCORE_MAP.put("chzy_normal_2", 3); SCORE_MAP.put("chzy_normal_3", 3); SCORE_MAP.put("chzy_normal_4", 3); + // 非单据扣分类 流程第7步 SCORE_MAP.put("chzy_normal_5", 3); SCORE_MAP.put("chzy_normal_6", 3); SCORE_MAP.put("chzy_normal_7", 3); + // 非单据扣分类 流程第10步 SCORE_MAP.put("chzy_normal_8", 2); // 保兑仓融资(67个扣分点) - // 银行承兑汇票 + // 银行承兑汇票 流程第13步 SCORE_MAP.put("bdc_yhcdhp_1", 2); SCORE_MAP.put("bdc_yhcdhp_2", 2); SCORE_MAP.put("bdc_yhcdhp_3", 2); @@ -122,7 +146,7 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("bdc_yhcdhp_6", 2); SCORE_MAP.put("bdc_yhcdhp_7", 2); SCORE_MAP.put("bdc_yhcdhp_8", 2); - //银行承兑汇票收悉确认函 + //银行承兑汇票收悉确认函 流程第14步 SCORE_MAP.put("bdc_yhcdhpsxqrh_1", 2); SCORE_MAP.put("bdc_yhcdhpsxqrh_2", 2); SCORE_MAP.put("bdc_yhcdhpsxqrh_3", 2); @@ -136,7 +160,7 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("bdc_yhcdhpsxqrh_11", 2); SCORE_MAP.put("bdc_yhcdhpsxqrh_12", 1); SCORE_MAP.put("bdc_yhcdhpsxqrh_13", 1); - // 金融仓储仓单 + // 金融仓储仓单 流程第16步 SCORE_MAP.put("bdc_jrcccd_1", 2); SCORE_MAP.put("bdc_jrcccd_2", 2); SCORE_MAP.put("bdc_jrcccd_3", 2); @@ -146,7 +170,7 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("bdc_jrcccd_7", 1); SCORE_MAP.put("bdc_jrcccd_8", 1); SCORE_MAP.put("bdc_jrcccd_9", 1); - // 提货申请书(适用于总敞口控制提货模式); + // 提货申请书(适用于总敞口控制提货模式); 流程第19步 SCORE_MAP.put("bdc_thsqs_zck_1", 2); SCORE_MAP.put("bdc_thsqs_zck_2", 2); SCORE_MAP.put("bdc_thsqs_zck_3", 2); @@ -157,7 +181,7 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("bdc_thsqs_zck_8", 2); SCORE_MAP.put("bdc_thsqs_zck_9", 1); SCORE_MAP.put("bdc_thsqs_zck_10", 1); - // 提货通知书(适用于总敞口控制提货模式) + // 提货通知书(适用于总敞口控制提货模式) 流程第20步 SCORE_MAP.put("bdc_thtzs_zck_1", 2); SCORE_MAP.put("bdc_thtzs_zck_2", 2); SCORE_MAP.put("bdc_thtzs_zck_3", 2); @@ -168,7 +192,7 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("bdc_thtzs_zck_8", 2); SCORE_MAP.put("bdc_thtzs_zck_9", 1); SCORE_MAP.put("bdc_thtzs_zck_10", 1); - // 提货通知书(回执) + // 提货通知书(回执) 流程第21步 SCORE_MAP.put("bdc_thtzs_hz_1", 2); SCORE_MAP.put("bdc_thtzs_hz_2", 2); SCORE_MAP.put("bdc_thtzs_hz_3", 2); @@ -178,17 +202,20 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("bdc_thtzs_hz_7", 2); SCORE_MAP.put("bdc_thtzs_hz_8", 1); SCORE_MAP.put("bdc_thtzs_hz_9", 1); - // 非单据扣分点 + // 非单据扣分点 流程第1步 SCORE_MAP.put("bdc_normal_1", 2); SCORE_MAP.put("bdc_normal_2", 2); SCORE_MAP.put("bdc_normal_3", 2); SCORE_MAP.put("bdc_normal_4", 2); + // 非单据扣分点 流程第2步 SCORE_MAP.put("bdc_normal_5", 2); + // 非单据扣分点 流程第7步 SCORE_MAP.put("bdc_normal_6", 1); SCORE_MAP.put("bdc_normal_7", 1); + // 非单据扣分点 流程第9步 SCORE_MAP.put("bdc_normal_8", 1); // 应收账款质押融资(33个扣分点) - // 应收账款质押合同 + // 应收账款质押合同 流程第8步 SCORE_MAP.put("yszk_yyht_1", 4); SCORE_MAP.put("yszk_yyht_2", 4); SCORE_MAP.put("yszk_yyht_3", 4); @@ -200,9 +227,10 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("yszk_yyht_9", 3); SCORE_MAP.put("yszk_yyht_10", 3); SCORE_MAP.put("yszk_yyht_11", 3); - SCORE_MAP.put("yszk_yyht_12", 3); SCORE_MAP.put("yszk_yyht_13", 3); - // 应收账款债务人确认函(30分); + // 应收账款质押合同 流程第9步 + SCORE_MAP.put("yszk_yyht_12", 3); + // 应收账款债务人确认函(30分); 流程第10步 SCORE_MAP.put("yszk_zwrqrh_1", 4); SCORE_MAP.put("yszk_zwrqrh_2", 3); SCORE_MAP.put("yszk_zwrqrh_3", 3); @@ -214,18 +242,20 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("yszk_zwrqrh_9", 4); SCORE_MAP.put("yszk_zwrqrh_10", 3); SCORE_MAP.put("yszk_zwrqrh_11", 3); - // 非单据扣分点(29分); + // 非单据扣分点(29分); 流程第1步 SCORE_MAP.put("yszk_normal_1", 3); SCORE_MAP.put("yszk_normal_2", 3); SCORE_MAP.put("yszk_normal_3", 4); SCORE_MAP.put("yszk_normal_4", 4); + // 非单据扣分点(29分); 流程第5步 SCORE_MAP.put("yszk_normal_5", 3); SCORE_MAP.put("yszk_normal_6", 3); SCORE_MAP.put("yszk_normal_7", 3); SCORE_MAP.put("yszk_normal_8", 3); + // 非单据扣分点(29分); 流程第13步 SCORE_MAP.put("yszk_normal_9", 3); // 正向保理(80个扣分点) - // 国内保理业务合同(13分); + // 国内保理业务合同(13分); 流程第7步 SCORE_MAP.put("zxbl_blywht_1", 2); SCORE_MAP.put("zxbl_blywht_2", 2); SCORE_MAP.put("zxbl_blywht_3", 2); @@ -233,9 +263,10 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("zxbl_blywht_5", 1); SCORE_MAP.put("zxbl_blywht_6", 1); SCORE_MAP.put("zxbl_blywht_7", 1); - SCORE_MAP.put("zxbl_blywht_8", 1); SCORE_MAP.put("zxbl_blywht_9", 1); - // 应收账款转让书(14分) + // 国内保理业务合同(13分); 流程第8步 + SCORE_MAP.put("zxbl_blywht_8", 1); + // 应收账款转让书(14分) 流程第9步 SCORE_MAP.put("zxbl_yszkzrs_1", 2); SCORE_MAP.put("zxbl_yszkzrs_2", 1); SCORE_MAP.put("zxbl_yszkzrs_3", 1); @@ -248,7 +279,7 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("zxbl_yszkzrs_10", 1); SCORE_MAP.put("zxbl_yszkzrs_11", 1); SCORE_MAP.put("zxbl_yszkzrs_12", 1); - // 应收账款转让通知书(37分) + // 应收账款转让通知书(37分) 流程第10步 SCORE_MAP.put("zxbl_yszkzrs_tz_1", 2); SCORE_MAP.put("zxbl_yszkzrs_tz_2", 2); SCORE_MAP.put("zxbl_yszkzrs_tz_3", 1); @@ -280,7 +311,7 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("zxbl_yszkzrs_tz_29", 2); SCORE_MAP.put("zxbl_yszkzrs_tz_30", 1); SCORE_MAP.put("zxbl_yszkzrs_tz_31", 1); - // 应收账款转让通知书(回执);(37分) + // 应收账款转让通知书(回执);(37分) 流程第11步 SCORE_MAP.put("zxbl_yszkzrs_hz_1", 2); SCORE_MAP.put("zxbl_yszkzrs_hz_2", 2); SCORE_MAP.put("zxbl_yszkzrs_hz_3", 2); @@ -301,17 +332,19 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("zxbl_yszkzrs_hz_18", 2); SCORE_MAP.put("zxbl_yszkzrs_hz_19", 1); SCORE_MAP.put("zxbl_yszkzrs_hz_20", 1); - // 非单据填写扣分点(12分); + // 非单据填写扣分点(12分); 流程第1步 SCORE_MAP.put("zxbl_normal_1", 2); SCORE_MAP.put("zxbl_normal_2", 2); SCORE_MAP.put("zxbl_normal_3", 2); SCORE_MAP.put("zxbl_normal_4", 2); + // 非单据填写扣分点(12分); 流程第5步 SCORE_MAP.put("zxbl_normal_5", 1); SCORE_MAP.put("zxbl_normal_6", 1); SCORE_MAP.put("zxbl_normal_7", 1); + // 非单据填写扣分点(12分); 流程第13步 SCORE_MAP.put("zxbl_normal_8", 1); // 反向保理(29个扣分点) - // 反向保理合作协议(45分); + // 反向保理合作协议(45分); 流程第5步 SCORE_MAP.put("fxbl_hzxy_1", 4); SCORE_MAP.put("fxbl_hzxy_2", 4); SCORE_MAP.put("fxbl_hzxy_3", 4); @@ -324,24 +357,136 @@ public class OperateScoresService extends CoreBaseService { SCORE_MAP.put("fxbl_hzxy_10", 3); SCORE_MAP.put("fxbl_hzxy_11", 3); SCORE_MAP.put("fxbl_hzxy_12", 3); - SCORE_MAP.put("fxbl_hzxy_13", 3); SCORE_MAP.put("fxbl_hzxy_14", 3); - // 保理合同签订(24分); + // 反向保理合作协议(45分); 流程第6步 + SCORE_MAP.put("fxbl_hzxy_13", 3); + // 保理合同签订(24分); 流程第8步 SCORE_MAP.put("fxbl_blht_1", 4); SCORE_MAP.put("fxbl_blht_2", 4); SCORE_MAP.put("fxbl_blht_3", 4); SCORE_MAP.put("fxbl_blht_4", 3); SCORE_MAP.put("fxbl_blht_5", 3); - SCORE_MAP.put("fxbl_blht_6", 3); SCORE_MAP.put("fxbl_blht_7", 3); - // 非单据扣分点(31分); + // 保理合同签订(24分); 流程第9步 + SCORE_MAP.put("fxbl_blht_6", 3); + // 非单据扣分点(31分); 流程第1步 SCORE_MAP.put("fxbl_normal_1", 4); SCORE_MAP.put("fxbl_normal_2", 4); SCORE_MAP.put("fxbl_normal_3", 4); SCORE_MAP.put("fxbl_normal_4", 4); + // 非单据扣分点(31分); 流程第10步 SCORE_MAP.put("fxbl_normal_5", 4); + // 非单据扣分点(31分); 流程第12步 SCORE_MAP.put("fxbl_normal_6", 4); SCORE_MAP.put("fxbl_normal_7", 4); + // 非单据扣分点(31分); 流程第14步 SCORE_MAP.put("fxbl_normal_8", 3); + + // 存货质押 + final FlowDeductionPoint chzyNormal = FlowDeductionPoint.generate("chzy_normal_", + 3, 1, 12, 1, 4, null); + final FlowDeductionPoint chzyZwqd = FlowDeductionPoint.generate("chzy_zwqd_", + 3, 6, 20, 1, 7, null); + final FlowDeductionPoint chzyNormal1 = FlowDeductionPoint.generate("chzy_normal_", + 3, 7, 9, 5, 7, null); + final FlowDeductionPoint chzyNormal2 = FlowDeductionPoint.generate("chzy_normal_", + 3, 10, 2, 8, 8, null); + final FlowDeductionPoint chzyThsqs = FlowDeductionPoint.generate("chzy_thsqs_", + 3, 11, 16, 1, 6, null); + final FlowDeductionPoint chzyThtzs = FlowDeductionPoint.generate("chzy_thtzs_", + 3, 12, 19, 1, 7, null); + final FlowDeductionPoint chzyThtzshz = FlowDeductionPoint.generate("chzy_thtzshz_", + 3, 13, 22, 1, 8, null); + chzyNormal.next(chzyZwqd).next(chzyNormal1).next(chzyNormal2).next(chzyThsqs) + .next(chzyThtzs).next(chzyThtzshz); + + // 保兑仓融资(67个扣分点) + final FlowDeductionPoint bdcNormal = FlowDeductionPoint.generate("bdc_normal_", + 1, 1, 8, 1, 4, null); + final FlowDeductionPoint bdcNormal1 = FlowDeductionPoint.generate("bdc_normal_", + 1, 2, 2, 5, 5, null); + final FlowDeductionPoint bdcNormal2 = FlowDeductionPoint.generate("bdc_normal_", + 1, 7, 2, 6, 7, null); + final FlowDeductionPoint bdcNormal3 = FlowDeductionPoint.generate("bdc_normal_", + 1, 9, 1, 8, 8, null); + final FlowDeductionPoint bdcYhcdhp = FlowDeductionPoint.generate("bdc_yhcdhp_", + 1, 13, 14, 1, 8, null); + final FlowDeductionPoint bdcYhcdhpsxqrh = FlowDeductionPoint.generate("bdc_yhcdhpsxqrh_", + 1, 14, 18, 1, 13, null); + final FlowDeductionPoint bdcJrcccd = FlowDeductionPoint.generate("bdc_jrcccd_", + 1, 16, 12, 1, 9, null); + final FlowDeductionPoint bdcThsqsZck = FlowDeductionPoint.generate("bdc_thsqs_zck_", + 1, 19, 15, 1, 10, null); + final FlowDeductionPoint bdcThtzsZck = FlowDeductionPoint.generate("bdc_thtzs_zck_", + 1, 20, 14, 1, 10, null); + final FlowDeductionPoint bdcThtzsHz = FlowDeductionPoint.generate("bdc_thtzs_hz_", + 1, 21, 14, 1, 9, null); + + bdcNormal.next(bdcNormal1).next(bdcNormal2).next(bdcNormal3) + .next(bdcYhcdhp).next(bdcYhcdhpsxqrh).next(bdcJrcccd) + .next(bdcThsqsZck).next(bdcThtzsZck).next(bdcThtzsHz); + + // 应收账款质押融资(33个扣分点) + final FlowDeductionPoint yszkNormal = FlowDeductionPoint.generate("yszk_normal_", + 2, 1, 14, 1, 4, null); + final FlowDeductionPoint yszkNormal1 = FlowDeductionPoint.generate("yszk_normal_", + 2, 5, 12, 5, 8, null); + final FlowDeductionPoint yszkYyht = FlowDeductionPoint.generate("yszk_yyht_", + 2, 8, 38, 1, 13, Collections.singletonList(12)); + final FlowDeductionPoint yszkYyht1 = FlowDeductionPoint.generate("yszk_yyht_", + 2, 9, 3, 12, 12, null); + final FlowDeductionPoint yszkZwrqrh = FlowDeductionPoint.generate("yszk_zwrqrh_", + 2, 10, 30, 1, 11, null); + final FlowDeductionPoint yszkNormal2 = FlowDeductionPoint.generate("yszk_normal_", + 2, 13, 3, 9, 9, null); + + yszkNormal.next(yszkNormal1).next(yszkYyht).next(yszkYyht1) + .next(yszkZwrqrh).next(yszkNormal2); + + // 正向保理(80个扣分点) + final FlowDeductionPoint zxblNormal = FlowDeductionPoint.generate("zxbl_normal_", + 4, 1, 8, 1, 4, null); + final FlowDeductionPoint zxblNormal1 = FlowDeductionPoint.generate("zxbl_normal_", + 4, 5, 3, 5, 7, null); + final FlowDeductionPoint zxblBlywht = FlowDeductionPoint.generate("zxbl_blywht_", + 4, 7, 12, 1, 9, Collections.singletonList(8)); + final FlowDeductionPoint zxblBlywht1 = FlowDeductionPoint.generate("zxbl_blywht_", + 4, 8, 1, 8, 8, null); + final FlowDeductionPoint zxblYszkzrs = FlowDeductionPoint.generate("zxbl_yszkzrs_", + 4, 9, 14, 1, 12, null); + final FlowDeductionPoint zxblYszkzrsTz = FlowDeductionPoint.generate("zxbl_yszkzrs_tz_", + 4, 10, 37, 1, 31, null); + final FlowDeductionPoint zxblYszkzrsHz = FlowDeductionPoint.generate("zxbl_yszkzrs_hz_", + 4, 11, 24, 1, 20, null); + final FlowDeductionPoint zxblNormal2 = FlowDeductionPoint.generate("zxbl_normal_", + 4, 13, 1, 8, 8, null); + zxblNormal.next(zxblNormal1).next(zxblBlywht).next(zxblBlywht1) + .next(zxblYszkzrs).next(zxblYszkzrsTz).next(zxblYszkzrsHz).next(zxblNormal2); + + // 反向保理(29个扣分点) + final FlowDeductionPoint fxblNormal = FlowDeductionPoint.generate("fxbl_normal_", + 5, 1, 16, 1, 4, null); + final FlowDeductionPoint fxblHzxy = FlowDeductionPoint.generate("fxbl_hzxy_", + 5, 5, 42, 1, 14, Collections.singletonList(13)); + final FlowDeductionPoint fxblHzxy1 = FlowDeductionPoint.generate("fxbl_hzxy_", + 5, 6, 3, 13, 13, null); + final FlowDeductionPoint fxblBlht = FlowDeductionPoint.generate("fxbl_blht_", + 5, 8, 21, 1, 7, Collections.singletonList(6)); + final FlowDeductionPoint fxblBlht1 = FlowDeductionPoint.generate("fxbl_blht_", + 5, 9, 3, 6, 6, null); + final FlowDeductionPoint fxblNormal1 = FlowDeductionPoint.generate("fxbl_normal_", + 5, 10, 4, 5, 5, null); + final FlowDeductionPoint fxblNormal2 = FlowDeductionPoint.generate("fxbl_normal_", + 5, 12, 8, 6, 7, null); + final FlowDeductionPoint fxblNormal3 = FlowDeductionPoint.generate("fxbl_normal_", + 5, 14, 3, 8, 8, null); + fxblNormal.next(fxblHzxy).next(fxblHzxy1).next(fxblBlht) + .next(fxblBlht1).next(fxblNormal1).next(fxblNormal2).next(fxblNormal3); + + FLOW_SCORE_POINT.put(1L, bdcNormal); + FLOW_SCORE_POINT.put(2L, yszkNormal); + FLOW_SCORE_POINT.put(3L, chzyNormal); + FLOW_SCORE_POINT.put(4L, zxblNormal); + FLOW_SCORE_POINT.put(5L, fxblNormal); } } diff --git a/web/src/main/java/com/ibeetl/jlw/flow/repayments/service/RepaymentsService.java b/web/src/main/java/com/ibeetl/jlw/flow/repayments/service/RepaymentsService.java index 85e248d..b046edf 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/repayments/service/RepaymentsService.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/repayments/service/RepaymentsService.java @@ -8,7 +8,6 @@ import com.ibeetl.jlw.flow.financings.entity.Financings; import com.ibeetl.jlw.flow.financings.service.FinancingsService; import com.ibeetl.jlw.flow.repayments.dao.RepaymentsDao; import com.ibeetl.jlw.flow.repayments.entity.Repayments; -import com.ibeetl.jlw.service.ExaminationFinancialsService; import com.ibeetl.jlw.service.ExaminationInstancesService; import org.beetl.sql.core.engine.PageQuery; import org.springframework.beans.factory.annotation.Autowired; @@ -31,9 +30,6 @@ public class RepaymentsService extends CoreBaseService { @Autowired private FinancingsService financingsService; - @Autowired - private ExaminationFinancialsService examinationFinancialsService; - @Autowired private ExaminationInstancesService examinationInstancesService; @@ -150,17 +146,17 @@ public class RepaymentsService extends CoreBaseService { if (Objects.equals(1, dto.getRepaymentType())) { // 买方还款 - examinationFinancialsService.decrementBalance(dto.getExaminationId(), dto.getInstanceId(), "1", dto.getRepaymentAmount()); // 买方角色ID为1 + examinationInstancesService.decrementBalance(dto.getExaminationId(), dto.getInstanceId(), "1", dto.getRepaymentAmount()); // 买方角色ID为1 } else if (Objects.equals(2, dto.getRepaymentType())) { // 卖方还款 - examinationFinancialsService.decrementBalance(dto.getExaminationId(), dto.getInstanceId(), "2", dto.getRepaymentAmount()); // 卖方角色ID为2 + examinationInstancesService.decrementBalance(dto.getExaminationId(), dto.getInstanceId(), "2", dto.getRepaymentAmount()); // 卖方角色ID为2 } // 保兑仓融资 结清贷款时, 卖方企业资金增加(增加额为汇票金额) if (payoff) { final Financings financings = financingsService.queryById(dto.getFinancingId()); if (Objects.equals(2, financings.getFinancingType())) { - examinationFinancialsService.incrementBalance(dto.getExaminationId(), dto.getInstanceId(), "2", financings.getApplyAmount()); // 卖方角色ID为2 + examinationInstancesService.incrementBalance(dto.getExaminationId(), dto.getInstanceId(), "2", financings.getApplyAmount()); // 卖方角色ID为2 } } @@ -179,7 +175,7 @@ public class RepaymentsService extends CoreBaseService { // 更新卖方资金 final Repayments repayments = repaymentsDao.single(dto.getId()); - examinationFinancialsService.decrementBalance(repayments.getExaminationId(), dto.getInstanceId(), "2", repayments.getRepaymentAmount()); // 卖方角色ID为2 + examinationInstancesService.decrementBalance(repayments.getExaminationId(), dto.getInstanceId(), "2", repayments.getRepaymentAmount()); // 卖方角色ID为2 // 更新还款状态 还款人 还款时间 还款编号 dto.setRepaymentStatus(9); diff --git a/web/src/main/java/com/ibeetl/jlw/flow/sendproducts/service/SendProductsService.java b/web/src/main/java/com/ibeetl/jlw/flow/sendproducts/service/SendProductsService.java index d7caa56..7b6c615 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/sendproducts/service/SendProductsService.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/sendproducts/service/SendProductsService.java @@ -3,16 +3,13 @@ package com.ibeetl.jlw.flow.sendproducts.service; import cn.jlw.Exception.GlobalException; import com.ibeetl.admin.core.service.CoreBaseService; import com.ibeetl.admin.core.util.NoUtil; -import com.ibeetl.jlw.entity.ExaminationFinancials; +import com.ibeetl.jlw.entity.ExaminationInstances; import com.ibeetl.jlw.flow.contractsproducts.entity.ContractsProducts; import com.ibeetl.jlw.flow.contractsproducts.service.ContractsProductsService; import com.ibeetl.jlw.flow.contractspurchasesales.entity.ContractsPurchaseSales; import com.ibeetl.jlw.flow.contractspurchasesales.service.ContractsPurchaseSalesService; -import com.ibeetl.jlw.flow.financings.entity.Financings; -import com.ibeetl.jlw.flow.financings.service.FinancingsService; import com.ibeetl.jlw.flow.sendproducts.dao.SendProductsDao; import com.ibeetl.jlw.flow.sendproducts.entity.SendProducts; -import com.ibeetl.jlw.service.ExaminationFinancialsService; import com.ibeetl.jlw.service.ExaminationInstancesService; import org.beetl.sql.core.engine.PageQuery; import org.springframework.beans.factory.annotation.Autowired; @@ -23,7 +20,6 @@ import org.springframework.util.StringUtils; import java.math.BigDecimal; import java.util.Date; import java.util.List; -import java.util.Objects; /** @@ -35,9 +31,6 @@ public class SendProductsService extends CoreBaseService { @Autowired private SendProductsDao sendProductsDao; - @Autowired - private ExaminationFinancialsService examinationFinancialsService; - @Autowired private ContractsPurchaseSalesService contractsPurchaseSalesService; @@ -47,9 +40,6 @@ public class SendProductsService extends CoreBaseService { @Autowired private ExaminationInstancesService examinationInstancesService; - @Autowired - private FinancingsService financingsService; - public PageQuery pageQueryByCondition(SendProducts queryParam) { return sendProductsDao.pageQueryByCondition(queryParam.getPageQuery(), queryParam); } @@ -128,11 +118,11 @@ public class SendProductsService extends CoreBaseService { final BigDecimal totalCostPrice = contract.getTotalCostPrice(); // 货物总成本 // 卖方资金减少(成本价购买货物) - examinationFinancialsService.decrementBalance(contract.getExaminationId(), contract.getInstanceId(), "2", totalCostPrice); // 卖方角色ID为2 + examinationInstancesService.decrementBalance(contract.getExaminationId(), contract.getInstanceId(), "2", totalCostPrice); // 卖方角色ID为2 // 存货增加(成本价计算),发货导致存货价值减少(售价计算) - final BigDecimal sub = totalCostPrice.subtract(contract.getTotalSellPrice()); - examinationFinancialsService.incrementProductAssets(contract.getExaminationId(), contract.getInstanceId(), "2", sub); // 卖方角色ID为2 +// final BigDecimal sub = totalCostPrice.subtract(contract.getTotalSellPrice()); +// examinationInstancesService.incrementProductAssets(contract.getExaminationId(), contract.getInstanceId(), "2", sub); // 卖方角色ID为2 this.updateTemplate(dto); // 修改发货状态 // 推进流程进度 @@ -168,16 +158,16 @@ public class SendProductsService extends CoreBaseService { dto.setUpdatedAt(new Date()); dto.setSendStatus(1); // 发货状态1:已发货待接收 final SendProducts sendProducts = this.queryById(dto.getId()); - final ExaminationFinancials balance = examinationFinancialsService.getBalanceProductAssets(sendProducts.getExaminationId(), sendProducts.getInstanceId(), "2"); + final ExaminationInstances balance = examinationInstancesService.queryById(sendProducts.getInstanceId()); if (balance == null || balance.getBalance() == null || balance.getBalance().compareTo(sendProducts.getTotalSellPrice()) < 0) { throw new GlobalException("剩余可用资金不足"); } // 卖方企业发货:视为企业先用可用资金以成本价购买货物,资金减少,存货增加(货物质押不转移所有权,融资企业存货增加以成本价计算) - examinationFinancialsService.decrementBalance(sendProducts.getExaminationId(), sendProducts.getInstanceId(), "2", sendProducts.getTotalCostPrice()); // 卖方角色ID为2 + examinationInstancesService.decrementBalance(sendProducts.getExaminationId(), sendProducts.getInstanceId(), "2", sendProducts.getTotalCostPrice()); // 卖方角色ID为2 // 存货增加,存货以成本价计算价值 - examinationFinancialsService.incrementProductAssets(sendProducts.getExaminationId(), sendProducts.getInstanceId(), "2", sendProducts.getTotalCostPrice()); // 卖方角色ID为2 + examinationInstancesService.incrementProductAssets(sendProducts.getExaminationId(), sendProducts.getInstanceId(), "2", sendProducts.getTotalSellPrice()); // 卖方角色ID为2 this.updateTemplate(dto); // 修改发货状态 // 推进流程进度 @@ -197,7 +187,7 @@ public class SendProductsService extends CoreBaseService { final ContractsPurchaseSales contract = contractsPurchaseSalesService.queryDetailBySendId(dto.getId()); final BigDecimal contractAmount = contract.getContractAmount(); // 货物总售价 // 存货增加,存货价值以当时售价计算 - examinationFinancialsService.incrementProductAssets(contract.getExaminationId(), contract.getInstanceId(), + examinationInstancesService.incrementProductAssets(contract.getExaminationId(), contract.getInstanceId(), "1", contractAmount); // 买方角色ID为1 this.updateTemplate(dto); // 修改收货状态 收货地址 收货时间 diff --git a/web/src/main/java/com/ibeetl/jlw/flow/warehouseshipment/service/WarehouseShipmentService.java b/web/src/main/java/com/ibeetl/jlw/flow/warehouseshipment/service/WarehouseShipmentService.java index 28e7554..31ca860 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/warehouseshipment/service/WarehouseShipmentService.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/warehouseshipment/service/WarehouseShipmentService.java @@ -9,7 +9,6 @@ import com.ibeetl.jlw.flow.pickupproducts.entity.PickupProducts; import com.ibeetl.jlw.flow.pickupproducts.service.PickupProductsService; import com.ibeetl.jlw.flow.warehouseshipment.dao.WarehouseShipmentDao; import com.ibeetl.jlw.flow.warehouseshipment.entity.WarehouseShipment; -import com.ibeetl.jlw.service.ExaminationFinancialsService; import com.ibeetl.jlw.service.ExaminationInstancesService; import org.beetl.sql.core.engine.PageQuery; import org.springframework.beans.factory.annotation.Autowired; @@ -31,9 +30,6 @@ public class WarehouseShipmentService extends CoreBaseService @Autowired private ExaminationInstancesService examinationInstancesService; - @Autowired - private ExaminationFinancialsService examinationFinancialsService; - @Autowired private ContractsProductsService contractsProductsService; @@ -139,7 +135,7 @@ public class WarehouseShipmentService extends CoreBaseService // 买方企业收货之后,存货价值增加,存货以当前售价计算价值 final PickupProducts pickupProducts = pickupProductsService.queryById(warehouseShipment.getPickupProductId()); - examinationFinancialsService.incrementProductAssets(warehouseShipment.getExaminationId(), + examinationInstancesService.incrementProductAssets(warehouseShipment.getExaminationId(), warehouseShipment.getInstanceId(), "1", pickupProducts.getPickupApplyAmount()); // 买方角色ID为1 } else { // 存货质押融资没有购销合同 已提货物金额 根据协议ID查询 @@ -148,6 +144,13 @@ public class WarehouseShipmentService extends CoreBaseService int step = hadPickupAmount.compareTo(financings.getYfzkAmount()) == 0 // 所有货物均已提货 && Objects.equals(financings.getFinancingStatus(), 9) // 贷款已结清 ? dto.getLastStep() : dto.getStep(); + + if (Objects.equals(financings.getFinancingType(), 1) && step == dto.getLastStep()) { + // 存货质押卖方收货时,存货价值根据当时商品售价变化 + final BigDecimal amount = contractsProductsService.getCurrentAmount(null, warehouseShipment.getProtocolId()); + examinationInstancesService.incrementProductAssets(warehouseShipment.getExaminationId(), + warehouseShipment.getInstanceId(), "2", amount.subtract(hadPickupAmount)); // 卖方角色ID为2 + } examinationInstancesService.finishStep(warehouseShipment.getInstanceId(), step); } } diff --git a/web/src/main/java/com/ibeetl/jlw/service/ExaminationFinancialsService.java b/web/src/main/java/com/ibeetl/jlw/service/ExaminationFinancialsService.java deleted file mode 100644 index d39cfa2..0000000 --- a/web/src/main/java/com/ibeetl/jlw/service/ExaminationFinancialsService.java +++ /dev/null @@ -1,319 +0,0 @@ -package com.ibeetl.jlw.service; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.*; - -import cn.jlw.util.BusinessUtils; -import cn.jlw.util.SztzjyRequestUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.ibeetl.admin.core.web.JsonResult; -import com.ibeetl.jlw.dao.ExaminationFinancialsDao; -import com.ibeetl.jlw.entity.ExaminationFinancials; -import com.ibeetl.jlw.entity.StudentAssetsInfoEntity; -import com.ibeetl.jlw.entity.UserExaminations; -import com.ibeetl.jlw.entity.Users; -import com.ibeetl.jlw.web.query.ExaminationFinancialsQuery; - -import com.ibeetl.admin.core.service.CoreBaseService; -import com.ibeetl.admin.core.util.PlatformException; -import org.beetl.sql.core.db.KeyHolder; -import org.beetl.sql.core.engine.PageQuery; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - - -/** - * ExaminationFinancials Service - */ - -@Service -@Transactional -public class ExaminationFinancialsService extends CoreBaseService { - - @Autowired - private ExaminationFinancialsDao examinationFinancialsDao; - - @Autowired - private UsersService usersService; - - - /** - * 我的资产概况业务方法 - * - * @param users - * @param type - * @return java.util.Map - * @Date 2022-07-20 15:38 - */ - public ExaminationFinancials financial(Users users, Integer type) { - - ExaminationFinancials examinationFinancials = new ExaminationFinancials(); - - // 只需要UserExaminations - UserExaminations userExaminations = examinationFinancialsDao.getExaminationsAndUserExaminations(users, type); - - if (!Objects.isNull(userExaminations)) { - examinationFinancials = queryById(userExaminations.getFinancialId()); - } - if (Objects.isNull(userExaminations)) { - userExaminations = new UserExaminations(); - } - if (type > 0) { - // 获取最近实训资产信息 - examinationFinancials.setInitBalance(new BigDecimal((String) BusinessUtils.toFixed(examinationFinancials.getInitBalance(), 2, false))); - examinationFinancials.setBalance(new BigDecimal((String) BusinessUtils.toFixed(examinationFinancials.getBalance(), 2, false))); - examinationFinancials.setProductAssets(new BigDecimal((String) BusinessUtils.toFixed(examinationFinancials.getProductAssets(), 2, false))); - examinationFinancials.set("totalBalance", BusinessUtils.toFixed(examinationFinancials.getBalance(), 2, false)); - examinationFinancials.setRaiseRate(BusinessUtils.doubleValueJudgment(userExaminations.getClassOrders())); - examinationFinancials.setRaiseOrders(BusinessUtils.integerValueJudgment(examinationFinancials.getRaiseOrders())); - return examinationFinancials; - } - - usersService.syncFinancial(users); - // 获取练习模式资产信息 - examinationFinancials.setInitBalance(new BigDecimal((String) BusinessUtils.toFixed(examinationFinancials.getInitBalance(), 2, false))); - examinationFinancials.setBalance(new BigDecimal((String) BusinessUtils.toFixed(examinationFinancials.getBalance(), 2, false))); - examinationFinancials.setProductAssets(new BigDecimal((String) BusinessUtils.toFixed(users.getProductAssets(), 2, false))); - examinationFinancials.set("totalBalance", BusinessUtils.toFixed(users.getBalance(), 2, false)); - examinationFinancials.setRaiseRate(examinationFinancials.getRaiseRate() == null ? new BigDecimal(0) : examinationFinancials.getRaiseRate()); - examinationFinancials.setRaiseOrders(examinationFinancials.getRaiseOrders() == null ? 0 : examinationFinancials.getRaiseOrders()); - - return examinationFinancials; - } - - public PageQuery queryByCondition(PageQuery query) { - PageQuery ret = examinationFinancialsDao.queryByCondition(query); - queryListAfter(ret.getList()); - return ret; - } - - public void deleteExaminationFinancials(String ids) { - try { - examinationFinancialsDao.deleteExaminationFinancialsByIds(ids); - } catch (Exception e) { - throw new PlatformException("批量删除ExaminationFinancials失败", e); - } - } - - public List getValues(Object paras) { - return sqlManager.select("jlw.examinationFinancials.getExaminationFinancialsValues", ExaminationFinancials.class, paras); - } - - public List getValuesByQuery(ExaminationFinancialsQuery examinationFinancialsQuery) { - return examinationFinancialsDao.getValuesByQuery(examinationFinancialsQuery); - } - - public ExaminationFinancials examinationFinancialByQuery(Long userId, Integer type) { - return examinationFinancialsDao.examinationFinancialByQuery(userId, type); - } - - /** - * 查询最近的实训资产信息 - * - * @param userId 用户ID - * @param type 类型 0练习 1实训 - */ - public ExaminationFinancials getLastExaminationFinancials(Long userId, Integer type) { - return examinationFinancialsDao.getLastExaminationFinancials(userId, type); - } - - public KeyHolder insertReturnKey(ExaminationFinancials examinationFinancials) { - return examinationFinancialsDao.insertReturnKey(examinationFinancials); - } - - /** - * 首页-查询学生端资产状况 - * - * @param type 0练习模式 1实训模式 - */ - public JsonResult queryStudentAssetsInformation(Long usersId, Integer type) { - //每次练习后,资产增长率在全班的排名 - //1.学生开始实训前,分配1百万初始资金,保存在examination_financials表 - //2、计算排名,是按一个实训考核的,同一个实训,同一个班级 - //3、学生的 - //实训: 相同实训,同班同学排名 - //练习:总资产(分配1百万初始资金),同班同学排名 - if (Objects.isNull(usersId)) { - return JsonResult.failMessage("获取失败"); - } - - // 获取最近实训资产信息 - ExaminationFinancials lastExaminationFinancials = getLastExaminationFinancials(usersId, type); - if (lastExaminationFinancials == null) { - lastExaminationFinancials = new ExaminationFinancials(); - } - ExaminationFinancials financials = new ExaminationFinancials(); - // 实训模式资产信息是最近实训的资产信息 - financials.setInitBalance(financialRound(lastExaminationFinancials.getInitBalance())); - financials.setBalance(financialRound(lastExaminationFinancials.getBalance())); - financials.setProductAssets(financialRound(lastExaminationFinancials.getProductAssets())); - financials.setTotalBalance(financialRound(financials.getBalance().add(financials.getProductAssets()))); - - financials.setRaiseOrders(lastExaminationFinancials.getRaiseOrders() == null ? 0 : lastExaminationFinancials.getRaiseOrders()); - financials.setRaiseRate(lastExaminationFinancials.getRaiseRate() == null ? BigDecimal.ZERO : lastExaminationFinancials.getRaiseRate()); - return JsonResult.success(financials); - } - - /** - * 首页-添加学生端资产状况 - * - * @param id - * @param usersId 智云平台 用户id - * @param type 0 练习 1 实训 - */ - public void addStudentAssetsInformation(Long id, Long usersId, Integer type) { - ExaminationFinancials single = sqlManager.lambdaQuery(ExaminationFinancials.class).andEq(ExaminationFinancials::getId, id).single(); - if (Objects.isNull(single)) { - StudentAssetsInfoEntity.ResultDTO.DataDTO assetAllocationInfo = getAssetAllocationInfo(usersId); - ExaminationFinancials financials = new ExaminationFinancials(); - financials.setCreatedAt(new Date()); - financials.setUpdatedAt(new Date()); - financials.setInitBalance(Objects.isNull(assetAllocationInfo.getInitialCapital()) ? BigDecimal.valueOf(1000000) : BigDecimal.valueOf(assetAllocationInfo.getInitialCapital())); - financials.setBalance(Objects.isNull(assetAllocationInfo.getAvailableFunds()) ? BigDecimal.valueOf(1000000) : BigDecimal.valueOf(assetAllocationInfo.getAvailableFunds())); - financials.setType(type); - financials.setUserId(usersId); - sqlManager.lambdaQuery(ExaminationFinancials.class).insert(financials); - } - } - - /** - * 首页-更新学生端资产状况 - * - * @param id - * @param consumptionMoney 使用金额 - * @param inventoryMoney 存货价值金额 - */ - public void upDataStudentAssetsInformation(Long id, BigDecimal consumptionMoney, BigDecimal inventoryMoney) { - ExaminationFinancials single = sqlManager.lambdaQuery(ExaminationFinancials.class).andEq(ExaminationFinancials::getId, id).single(); - if (!Objects.isNull(single)) { - BigDecimal balanceMoney = Objects.isNull(single.getBalance()) ? BigDecimal.valueOf(0) : single.getBalance(); - BigDecimal productAssetsMoney = Objects.isNull(single.getProductAssets()) ? BigDecimal.valueOf(0) : single.getProductAssets(); - //可用资金 - BigDecimal balance = balanceMoney.compareTo(BigDecimal.ZERO) == 0 ? - BigDecimal.valueOf(0) : balanceMoney.subtract(Objects.isNull(consumptionMoney) ? BigDecimal.valueOf(0) : consumptionMoney); - //存货价值 - BigDecimal productAssets = productAssetsMoney.add(Objects.isNull(inventoryMoney) ? BigDecimal.valueOf(0) : inventoryMoney); - //当前资产=可用资金+存货价值 - //资产增长率=(当前资产-初始资金)/初始资金 - BigDecimal raiseRate = balance.add(productAssets).divide(single.getInitBalance(), 2, RoundingMode.DOWN); - - ExaminationFinancials financials = new ExaminationFinancials(); - financials.setUpdatedAt(new Date()); - financials.setBalance(balance); - financials.setProductAssets(productAssets); - financials.setRaiseRate(raiseRate); - - sqlManager.lambdaQuery(ExaminationFinancials.class) - .andEq(ExaminationFinancials::getId, single.getId()) - .update(financials); - } - } - - - /** - * 调用智云平台 获取学生资产信息 - * - * @param userId - */ - public StudentAssetsInfoEntity.ResultDTO.DataDTO getAssetAllocationInfo(Long userId) { - JSONObject resp = SztzjyRequestUtil.get(SztzjyRequestUtil.GET_ASSET_ALLOCATION_INFO, new HashMap() {{ - put("userId", userId); - put("applicationId", 38); //todo 这里写死了 - }}); - StudentAssetsInfoEntity.ResultDTO.DataDTO data = new StudentAssetsInfoEntity().getResult().getData(); - - if (!Objects.isNull(resp)) { - StudentAssetsInfoEntity studentAssetsInfoEntity = JSON.parseObject(resp.toJSONString(), StudentAssetsInfoEntity.class); - if (studentAssetsInfoEntity.getSuccess() && !Objects.isNull(studentAssetsInfoEntity.getResult())) { - StudentAssetsInfoEntity.ResultDTO.DataDTO resultData = studentAssetsInfoEntity.getResult().getData(); - if (!Objects.isNull(resultData)) { - data = resultData; - } - } - } - return data; - } - - /** - * 查询可用余额和存货价值 - * - * @param examinationId 考核ID - * @param roleId 角色ID - */ - public ExaminationFinancials getBalanceProductAssets(Long examinationId, Long instanceId, String roleId) { - return examinationFinancialsDao.getBalanceProductAssets(examinationId, instanceId, roleId); - } - - /** - * 修改可用余额和存货价值 - */ - public void updateBalanceProductAssets(ExaminationFinancials financials) { - examinationFinancialsDao.updateBalanceProductAssets(financials); - } - - /** - * 增加可用余额 - * - * @param examinationId 考核ID - * @param roleId 角色ID 买方1, 卖方2 - * @param amount 减少金额 - */ - public void incrementBalance(Long examinationId, Long instanceId, String roleId, BigDecimal amount) { - examinationFinancialsDao.incrementBalance(examinationId, instanceId, roleId, amount); - } - - /** - * 减少可用余额 - * - * @param examinationId 考核ID - * @param roleId 角色ID 买方1, 卖方2 - * @param amount 增加金额 - */ - public void decrementBalance(Long examinationId, Long instanceId, String roleId, BigDecimal amount) { - examinationFinancialsDao.decrementBalance(examinationId, instanceId, roleId, amount); - } - - - /** - * 增加存货价值 - * - * @param examinationId 考核ID - * @param roleId 角色ID 买方1, 卖方2 - * @param amount 增加金额 - */ - public void incrementProductAssets(Long examinationId, Long instanceId, String roleId, BigDecimal amount) { - examinationFinancialsDao.incrementProductAssets(examinationId, instanceId, roleId, amount); - } - - /** - * 减少存货价值 - * - * @param examinationId 考核ID - * @param roleId 角色ID 买方1, 卖方2 - * @param amount 减少金额 - */ - public void decrementProductAssets(Long examinationId, Long instanceId, String roleId, BigDecimal amount) { - examinationFinancialsDao.decrementProductAssets(examinationId, instanceId, roleId, amount); - } - - public static BigDecimal financialRound(BigDecimal target) { - if (target == null) { - return BigDecimal.ZERO; - } - return target.setScale(2, RoundingMode.HALF_UP); - } - - public static ExaminationFinancials initFinancial() { - final ExaminationFinancials nef = new ExaminationFinancials(); - final BigDecimal w100 = BigDecimal.valueOf(1000000); - nef.setCreatedAt(new Date()); - nef.setInitBalance(w100); - nef.setBalance(w100); - nef.setProductAssets(BigDecimal.ZERO); - nef.setRaiseRate(BigDecimal.ZERO); - return nef; - } -} diff --git a/web/src/main/java/com/ibeetl/jlw/service/ExaminationInstancesService.java b/web/src/main/java/com/ibeetl/jlw/service/ExaminationInstancesService.java index 5a5b2ba..92ccbc4 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/ExaminationInstancesService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/ExaminationInstancesService.java @@ -1,18 +1,19 @@ package com.ibeetl.jlw.service; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.stream.Collectors; +import com.ibeetl.admin.core.web.JsonResult; import com.ibeetl.jlw.dao.ExaminationInstancesDao; import com.ibeetl.jlw.entity.ExaminationInstances; -import com.ibeetl.jlw.entity.Examinations; -import com.ibeetl.jlw.web.query.ExaminationInstancesQuery; import com.ibeetl.admin.core.service.CoreBaseService; -import com.ibeetl.admin.core.util.PlatformException; +import com.ibeetl.jlw.entity.Examinations; +import com.ibeetl.jlw.entity.UserExaminations; +import com.ibeetl.jlw.entity.Users; import org.beetl.sql.core.db.KeyHolder; -import org.beetl.sql.core.engine.PageQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -26,49 +27,218 @@ import org.springframework.transaction.annotation.Transactional; @Transactional public class ExaminationInstancesService extends CoreBaseService { + private static final BigDecimal w100 = BigDecimal.valueOf(1000000); // 初始资金100万 @Autowired private ExaminationInstancesDao examinationInstancesDao; - public PageQuery queryByCondition(PageQuery query) { - PageQuery ret = examinationInstancesDao.queryByCondition(query); - queryListAfter(ret.getList()); - return ret; + @Autowired + private ExaminationsService examinationsService; + + @Autowired + private UsersService usersService; + + public ExaminationInstances examinationFinancialByQuery(Long teamId, Long examinationId, Long flowId) { + return examinationInstancesDao.examinationFinancialByQuery(teamId, examinationId, flowId); + } + + public KeyHolder insertReturnKey(ExaminationInstances examinationInstances) { + return examinationInstancesDao.insertReturnKey(examinationInstances); + } + + public void finishStep(Long id, Integer step) { + examinationInstancesDao.finishStep(id, step); } - public void deleteExaminationInstances(String ids) { - try { - examinationInstancesDao.deleteExaminationInstancesByIds(ids); - } catch (Exception e) { - throw new PlatformException("批量删除ExaminationInstances失败", e); + /** + * 首页-查询学生端资产状况 + * + * @param type 0练习模式 1实训模式 + */ + public JsonResult queryStudentAssetsInformation(Long usersId, Integer type) { + //每次练习后,资产增长率在全班的排名 + //1.学生开始实训前,分配1百万初始资金 + //2、计算排名,是按一个实训考核的,同一个实训,同一个班级 + //3、学生的 + //实训: 相同实训,同班同学排名 + //练习:总资产(分配1百万初始资金),同班同学排名 + if (Objects.isNull(usersId)) { + return JsonResult.failMessage("获取失败"); } + + // 获取最近实训资产信息 + ExaminationInstances lastExaminationFinancials = examinationInstancesDao.getLastExaminationFinancials(usersId, type); + if (lastExaminationFinancials == null) { + lastExaminationFinancials = new ExaminationInstances(); + } + ExaminationInstances financials = new ExaminationInstances(); + // 实训模式资产信息是最近实训的资产信息 + financials.setInitBalance(financialRound(lastExaminationFinancials.getInitBalance())); + financials.setBalance(financialRound(lastExaminationFinancials.getBalance())); + financials.setProductAssets(financialRound(lastExaminationFinancials.getProductAssets())); + financials.setTotalBalance(financialRound(financials.getBalance().add(financials.getProductAssets()))); + + financials.setRaiseOrders(lastExaminationFinancials.getRaiseOrders() == null ? 0 : lastExaminationFinancials.getRaiseOrders()); + financials.setRaiseRate(lastExaminationFinancials.getRaiseRate() == null ? BigDecimal.ZERO : lastExaminationFinancials.getRaiseRate()); + return JsonResult.success(financials); } - public List getValues(Object paras) { - return sqlManager.select("jlw.examinationInstances.getExaminationInstancesValues", ExaminationInstances.class, paras); + + /** + * 增加可用余额 + * + * @param examinationId 考核ID + * @param roleId 角色ID 买方1, 卖方2 + * @param amount 减少金额 + */ + public void incrementBalance(Long examinationId, Long instanceId, String roleId, BigDecimal amount) { + if (disableChange(examinationId, roleId)) { + return; + } + examinationInstancesDao.incrementBalance(examinationId, instanceId, roleId, amount); } - public List getValuesByQuery(ExaminationInstancesQuery examinationInstancesQuery) { - return examinationInstancesDao.getValuesByQuery(examinationInstancesQuery); + /** + * 减少可用余额 + * + * @param examinationId 考核ID + * @param roleId 角色ID 买方1, 卖方2 + * @param amount 增加金额 + */ + public void decrementBalance(Long examinationId, Long instanceId, String roleId, BigDecimal amount) { + if (disableChange(examinationId, roleId)) { + return; + } + examinationInstancesDao.decrementBalance(examinationId, instanceId, roleId, amount); } - public ExaminationInstances examinationFinancialByQuery(Long teamId, Long examinationId, Long flowId) { - return examinationInstancesDao.examinationFinancialByQuery(teamId, examinationId, flowId); + + /** + * 增加存货价值 + * + * @param examinationId 考核ID + * @param roleId 角色ID 买方1, 卖方2 + * @param amount 增加金额 + */ + public void incrementProductAssets(Long examinationId, Long instanceId, String roleId, BigDecimal amount) { + if (disableChange(examinationId, roleId)) { + return; + } + examinationInstancesDao.incrementProductAssets(examinationId, instanceId, roleId, amount); } - public KeyHolder insertReturnKey(ExaminationInstances examinationInstances) { - return examinationInstancesDao.insertReturnKey(examinationInstances); + + public static BigDecimal financialRound(BigDecimal target) { + if (target == null) { + return BigDecimal.ZERO; + } + return target.setScale(2, RoundingMode.HALF_UP); } - public void finishStep(Long id, Integer step) { - examinationInstancesDao.finishStep(id, step); + /** + * 流程资产变化 只记录融资企业的 + * 保兑仓融资 flowId=1 时,买方融资 + * 其余都是卖方融资 + */ + private boolean disableChange(Long examinationId, String roleId) { + final Examinations examinations = examinationsService.queryById(examinationId); + final Long flowId = examinations.getFlowId(); + + if (Objects.equals(flowId, 1L)) { + return !"1".equals(roleId); + } else { + return !"2".equals(roleId); + } } - public static ExaminationInstances initInstance(Long examinationId, Long flowId) { + /** + * 初始化没有成绩的学生实训考核实例 + */ + public static ExaminationInstances noScoreInstance(Long examinationId, Long flowId, Long teamId) { final ExaminationInstances nei = new ExaminationInstances(); nei.setCreatedAt(new Date()); nei.setExaminationId(examinationId); nei.setFlowId(flowId); nei.setFinishStep(0); + nei.setTeamId(teamId == null ? 0L : teamId); + nei.setStatus(1); + nei.setBalance(w100); + nei.setInitBalance(w100); + nei.setProductAssets(BigDecimal.ZERO); + nei.setRaiseOrders(0); + nei.setRaiseRate(BigDecimal.ZERO); return nei; } + + /** + * 团队模式获取已存在的 examinationInstances + * 若不存在或者个人模式 生成新的 examinationInstances + */ + public ExaminationInstances getOrInitInstance(Users users, Long teamId, Long examinationId, Long flowId) { + ExaminationInstances examinationInstances; + + if (teamId > 0) { + // 团队成员使用同一个examinationInstances + examinationInstances = this.examinationFinancialByQuery(teamId, examinationId, flowId); + if (examinationInstances != null) { + return examinationInstances; + } + // 如果为空就保存 + examinationInstances = new ExaminationInstances(); + examinationInstances.setBalance(w100); + examinationInstances.setInitBalance(w100); + } else { + // 没有团队 生成新的 examinationInstances + examinationInstances = new ExaminationInstances(); + teamId = 0L; + try { + usersService.syncFinancial(users); + BigDecimal balance = users.getBalance().add(users.getProductAssets() == null ? BigDecimal.ZERO : users.getProductAssets()); + examinationInstances.setBalance(balance); + examinationInstances.setInitBalance(balance); + } catch (Exception e) { + // 同步智云若出现异常 赋默认值 + examinationInstances.setBalance(w100); + examinationInstances.setInitBalance(w100); + } + } + examinationInstances.setTeamId(teamId); + examinationInstances.setExaminationId(examinationId); + examinationInstances.setFlowId(flowId); + examinationInstances.setStatus(0); + examinationInstances.setCreatedAt(new Date()); + examinationInstances.setUpdatedAt(new Date()); + examinationInstances.setFinishStep(0); + examinationInstances.setProductAssets(BigDecimal.ZERO); + examinationInstances.setId(this.insertReturnKey(examinationInstances).getLong()); + return examinationInstances; + } + + /** + * 根据实训ID 更新资产增长率排名 + */ + public void updateRaiseOrders(Long examinationId) { + final List select = this.examinationInstancesDao.createLambdaQuery() + .andEq(ExaminationInstances::getExaminationId, examinationId).select(); + if (select.isEmpty()) { + return; + } + final List orderList = select.stream().filter(i -> i.getRaiseRate().compareTo(BigDecimal.ZERO) > 0) + .sorted(Comparator.comparing(ExaminationInstances::getRaiseRate).reversed()).collect(Collectors.toList()); + // 已结束的实训,计算资产增长率排名 updateRaiseOrders ==> php + int orderKey = 1; + final List updateEIList = new ArrayList<>(); + // 有分数的成绩参加排名 + + for (ExaminationInstances examinationInstances : orderList) { + // 保存到表 ExaminationInstances + final ExaminationInstances ei = new ExaminationInstances(); + ei.setId(examinationInstances.getId()); + ei.setRaiseOrders(orderKey); + updateEIList.add(ei); + orderKey++; + } + if (!updateEIList.isEmpty()) { + this.updateBatchTemplate(updateEIList); + } + } } diff --git a/web/src/main/java/com/ibeetl/jlw/service/ExaminationsService.java b/web/src/main/java/com/ibeetl/jlw/service/ExaminationsService.java index b44d612..443ccfb 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/ExaminationsService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/ExaminationsService.java @@ -1,6 +1,7 @@ package com.ibeetl.jlw.service; import cn.jlw.Exception.GlobalException; +import cn.jlw.util.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; @@ -15,7 +16,6 @@ import com.ibeetl.jlw.vo.ExaminationPermissionVO; import com.ibeetl.jlw.web.query.ExaminationsQuery; import com.ibeetl.jlw.web.query.TeamsQuery; import com.ibeetl.jlw.web.query.UserExaminationsQuery; -import org.apache.catalina.User; import org.beetl.sql.core.db.KeyHolder; import org.beetl.sql.core.engine.PageQuery; import org.springframework.beans.factory.annotation.Autowired; @@ -51,8 +51,6 @@ public class ExaminationsService extends CoreBaseService { @Autowired private FlowsService flowsService; @Autowired - private ExaminationFinancialsService examinationFinancialsService; - @Autowired private ExaminationInstancesService examinationInstancesService; @Autowired @@ -893,9 +891,6 @@ public class ExaminationsService extends CoreBaseService { /** * 首页待评分实训数量 - * - * @param user - * @return */ public JsonResult scoreExaminationsNumber(Users user) { if (Objects.isNull(user) || Objects.equals(user.getTeacherId(), 0L)) { @@ -947,87 +942,90 @@ public class ExaminationsService extends CoreBaseService { userExaminationsService.sumTotalScores(userExamination, examinations, flows); } - // 计算学生考核分数 - // 已结束的实训,计算资产增长率排名 updateRaiseOrders ==> php - userExaminations.sort(Comparator.comparing(UserExaminations::getRaiseRate)); - Collections.reverse(userExaminations); - int orderKey = 1; - final List updateExFinancList = new ArrayList<>(); - for (UserExaminations userExamination : userExaminations) { - // 保存到表 examination_financials - final ExaminationFinancials ef = new ExaminationFinancials(); - ef.setId(userExamination.getFinancialId()); - ef.setRaiseOrders(orderKey); - updateExFinancList.add(ef); - orderKey++; - } - examinationFinancialsService.updateBatchTemplate(updateExFinancList); + // 计算资产增长率排名 + examinationInstancesService.updateRaiseOrders(examinationId); - int teamOrder = 0; // 已提交成绩的实训,计算个人排名和团队排名 - final List updateUserExFinancList = new ArrayList<>(); + final List updateUserExList = new ArrayList<>(); if (examinations.getMode() >= 1) { - final Map> collect = userExaminations.stream() + final List orderList = userExaminations.stream() + .filter(i -> i.getTotalScores().compareTo(BigDecimal.ZERO) > 0) + .sorted(Comparator.comparing(UserExaminations::getRaiseRate).reversed()) + .collect(Collectors.toList()); + final Map> collect = orderList.stream() .collect(Collectors.groupingBy(UserExaminations::getTeamId)); for (List value : collect.values()) { - teamOrder = setScoreOrder(value, true); + setScoreOrder(value, true); } } else { userExaminations.forEach(i -> i.setTeamOrders(null)); } - int classOrder = setScoreOrder(userExaminations, false); + setScoreOrder(userExaminations, false); for (UserExaminations userExamination : userExaminations) { final UserExaminations updateUE = new UserExaminations(); updateUE.setId(userExamination.getId()); updateUE.setClassOrders(userExamination.getClassOrders()); updateUE.setTeamOrders(userExamination.getTeamOrders()); - updateUserExFinancList.add(updateUE); + updateUserExList.add(updateUE); } - userExaminationsService.updateBatchTemplate(updateUserExFinancList); + userExaminationsService.updateBatchTemplate(updateUserExList); + } - // 未参加实训的学生记零分 - final List notParticipatingUsers = userExaminationsService.notParticipatingUsers(examinationId); - if (notParticipatingUsers.isEmpty()) { - return; - } - for (UserExaminations u : notParticipatingUsers) { - final ExaminationInstances nei = ExaminationInstancesService.initInstance(examinationId, examinations.getFlowId()); - nei.setStatus(1); - nei.setTeamId(u.getTeamId() == null ? 0L : u.getTeamId()); - - final UserExaminations nue = UserExaminationsService.initUserExamination(examinationId, examinations.getFlowId()); - nue.setUserId(u.getUserId()); - nue.setTeamId(u.getTeamId() == null ? 0L : u.getTeamId()); - nue.setStatus(2); - nue.setFinishTime(new Date()); - nue.setClassId(u.getClassId()); - nue.setTeamOrders(teamOrder); - nue.setClassOrders(classOrder); - - final ExaminationFinancials nef = ExaminationFinancialsService.initFinancial(); - nef.setRaiseOrders(orderKey); - nef.setType(1); - nef.setUserId(u.getUserId()); - - final KeyHolder nefKey = examinationFinancialsService.insertReturnKey(nef); - nue.setFinancialId(nefKey.getLong()); - - final KeyHolder neiKey = examinationInstancesService.insertReturnKey(nei); - nue.setInstanceId(neiKey.getLong()); - - userExaminationsService.insert(nue); + /** + * 根据ID获取实训,若ID为空则初始化 + */ + public Examinations getOrInitExamination(Long examinationId, Flows flows, Integer isTeam) { + Examinations examinations; + if (examinationId != null && !examinationId.equals(0L)) { + //实训模式 + examinations = this.queryById(examinationId); + if (examinations == null) { + throw new GlobalException("找不到对应实训"); + } + } else { + //练习模式 + examinations = this.getPracticeExamination(flows, isTeam); } + return examinations; + } + /** + * 初始化练习模式考核 + * + * @param flows 流程 + * @param isTeam 是否是团队练习 + */ + public Examinations getPracticeExamination(Flows flows, Integer isTeam) { + Examinations examinations = this.getPracticeModeValue(flows.getId(), isTeam); + if (examinations != null) { + return examinations; + } + examinations = new Examinations(); + examinations.setFlowId(flows.getId()); + examinations.setMode(isTeam); + examinations.setType(0); + examinations.setName(flows.getName() + "-" + (isTeam == 1 ? "团队练习" : "个人练习")); + examinations.setTeacherId(0L); + examinations.setStartTime(new Date()); + examinations.setStatus(1); + examinations.setUserNum(0); + examinations.setScoresStatus(0); + examinations.setEndTime(DateUtil.addDays(new Date(), 365 * 10)); + examinations.setId(this.insertReturnKey(examinations).getLong()); + return examinations; } - private int setScoreOrder(List userExaminations, boolean isTeam) { + private void setScoreOrder(List userExaminations, boolean isTeam) { userExaminations.sort(Comparator.comparing(UserExaminations::getTotalScores)); Collections.reverse(userExaminations); int orderKey = 1; for (UserExaminations userExamination : userExaminations) { // 保存到表 user_examinations - if (isTeam) { + if (BigDecimal.ZERO.compareTo(userExamination.getTotalScores()) == 0) { // 零分没有排名 + userExamination.setTeamOrders(0); + userExamination.setClassOrders(0); + } else if (isTeam) { // 团队排名 userExamination.setTeamOrders(orderKey); } else { @@ -1036,7 +1034,7 @@ public class ExaminationsService extends CoreBaseService { } orderKey++; } - return orderKey; } + } diff --git a/web/src/main/java/com/ibeetl/jlw/service/ProductsService.java b/web/src/main/java/com/ibeetl/jlw/service/ProductsService.java index 7b46b71..055cfc8 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/ProductsService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/ProductsService.java @@ -30,6 +30,10 @@ public class ProductsService extends CoreBaseService { @Autowired private ProductsDao productsDao; + public List queryAll() { + return productsDao.createQuery().select(); + } + public PageQuery queryByCondition(PageQuery query) { PageQuery ret = productsDao.queryByCondition(query); queryListAfter(ret.getList()); diff --git a/web/src/main/java/com/ibeetl/jlw/service/UserExaminationsService.java b/web/src/main/java/com/ibeetl/jlw/service/UserExaminationsService.java index 3bd69ef..d4dcf9d 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/UserExaminationsService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/UserExaminationsService.java @@ -2,7 +2,6 @@ package com.ibeetl.jlw.service; import cn.jlw.Exception.GlobalException; import cn.jlw.util.BusinessUtils; -import cn.jlw.util.DateUtil; import cn.jlw.util.JsonMergeUtil; import com.alibaba.fastjson.JSONObject; import com.ibeetl.admin.core.service.CoreBaseService; @@ -22,6 +21,7 @@ import org.springframework.util.StringUtils; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; +import java.util.stream.Collectors; import static com.ibeetl.jlw.service.ConfigsService.getOrDefaultDecimal; @@ -41,8 +41,6 @@ public class UserExaminationsService extends CoreBaseService { @Autowired private ExaminationsService examinationsService; @Autowired - private ExaminationFinancialsService examinationFinancialsService; - @Autowired private UsersService usersService; @Autowired private ExaminationInstancesService examinationInstancesService; @@ -56,10 +54,6 @@ public class UserExaminationsService extends CoreBaseService { /** * 获取我的成绩业务处理 - * - * @param users - * @return java.util.Map - * @Date 2022-07-20 11:17 */ public UserExaminations myScores(Users users) { UserExaminations userExamination = userExaminationsDao.getUserAndExaminations(users.getId()); @@ -72,7 +66,6 @@ public class UserExaminationsService extends CoreBaseService { userExamination.set("gt_80", 0); userExamination.set("60_80", 0); userExamination.set("lt_60", 0); - return userExamination; } @@ -87,12 +80,6 @@ public class UserExaminationsService extends CoreBaseService { } - public PageQuery queryByCondition(PageQuery query) { - PageQuery ret = userExaminationsDao.queryByCondition(query); - queryListAfter(ret.getList()); - return ret; - } - public void deleteUserExaminations(String ids) { try { userExaminationsDao.deleteUserExaminationsByIds(ids); @@ -101,14 +88,6 @@ public class UserExaminationsService extends CoreBaseService { } } - public List getValues(Object paras) { - return sqlManager.select("jlw.userExaminations.getUserExaminationsValues", UserExaminations.class, paras); - } - - public List getValuesByQuery(UserExaminationsQuery userExaminationsQuery) { - return userExaminationsDao.getValuesByQuery(userExaminationsQuery); - } - /** * 我的成绩列表业务方法 * @@ -116,7 +95,7 @@ public class UserExaminationsService extends CoreBaseService { * @return java.util.Map * @Date 2022-07-21 18:12 */ - public PageQuery scoresListOfStudent(Users users, PageQuery page) { + public PageQuery scoresListOfStudent(Users users, PageQuery page) { PageQuery pagequery = userExaminationsDao.scoresListOfStudent(page, users); for (int i = 0; i < pagequery.getList().size(); i++) { @@ -135,6 +114,9 @@ public class UserExaminationsService extends CoreBaseService { userExaminations.setDurationScores(BusinessUtils.doubleValueJudgment(userExaminations.getDurationScores())); userExaminations.setTotalScores(BusinessUtils.doubleValueJudgment(userExaminations.getTotalScores())); userExaminations.setClassOrders(BusinessUtils.integerValueJudgment(userExaminations.getClassOrders())); + if (BigDecimal.ZERO.compareTo(userExaminations.getTotalScores()) == 0) { + userExaminations.setClassOrders(0); + } Financings financings = new Financings(); financings.set("init_balance", BusinessUtils.toFixed(userExaminations.get("initBalance"), 2, false)); @@ -151,158 +133,16 @@ public class UserExaminationsService extends CoreBaseService { /** * 学生创建实训/练习实例 个人业务处理方法 - * - * @param users - * @param flowId - * @param examinationId - * @param isTeam - * @param teamId - * @return java.util.Map - * @Date 2022-07-22 15:27 */ @Transactional public Examinations addUserExamination(Users users, Long flowId, Long examinationId, Integer isTeam, Long teamId) { - Flows flows = flowsService.queryById(flowId); - - Examinations examinations; if (flows == null) { throw new GlobalException("找不到对应业务流程"); } - if (!Objects.isNull(examinationId) && !examinationId.equals(0L)) { - //实训模式 - examinations = examinationsService.queryById(examinationId); - if (examinations == null) { - throw new GlobalException("找不到对应实训"); - } - } else { - //练习模式 - examinations = examinationsService.getPracticeModeValue(flowId, isTeam); - if (examinations == null) { - examinations = new Examinations(); - examinations.setFlowId(flowId); - examinations.setMode(isTeam); - examinations.setType(0); - examinations.setName(flows.getName() + "-" + (isTeam == 1 ? "团队练习" : "个人练习")); - examinations.setTeacherId(0L); - examinations.setStartTime(new Date()); - examinations.setStatus(1); - examinations.setUserNum(0); - examinations.setScoresStatus(0); - examinations.setEndTime(DateUtil.addDays(new Date(), 365 * 10)); - examinationId = examinationsService.insertReturnKey(examinations).getLong(); - examinations.setId(examinationId); - } - } - - // 根据条件查询userExaminations - UserExaminations userExaminations = userExaminationsDao.getPracticeModeValue(teamId, examinations, users); - // 如果查询为空,就返回一个新的对象 - if (Objects.isNull(userExaminations)) { - userExaminations = new UserExaminations(); - userExaminations.setTeamId(teamId); - userExaminations.setExaminationId(examinations.getId()); - userExaminations.setFlowId(examinations.getFlowId()); - userExaminations.setUserId(users.getId()); - userExaminations.setClassId(users.getClassId()); - userExaminations.setStatus(0); - userExaminations.setClassOrders(0); - userExaminations.setTeamOrders(0); - - if (examinations.getType() == 0) { - // 同步智云平台的资产信息 - usersService.syncFinancial(users); - - // 根据条件判断ExaminationFinancials是否存在对应的值 - BigDecimal balance = users.getBalance().add(users.getProductAssets() == null ? BigDecimal.ZERO : users.getProductAssets()); - ExaminationFinancials examinationFinancials = examinationFinancialsService.examinationFinancialByQuery(users.getId(), examinations.getType()); - // 如果为空就保存 - if (Objects.isNull(examinationFinancials)) { - examinationFinancials = new ExaminationFinancials(); - examinationFinancials.setBalance(balance); - examinationFinancials.setInitBalance(balance); - examinationFinancials.setProductAssets(new BigDecimal(0)); - examinationFinancials.setCreatedAt(new Date()); - examinationFinancials.setUserId(users.getId()); - examinationFinancials.setType(examinations.getType()); - KeyHolder keyHolder = examinationFinancialsService.insertReturnKey(examinationFinancials); - userExaminations.setFinancialId(Long.valueOf(keyHolder.getKey().toString())); - } else { - userExaminations.setFinancialId(examinationFinancials.getId()); - } - } else { - ExaminationFinancials examinationFinancials = examinationFinancialsService.examinationFinancialByQuery(users.getId(), examinations.getType()); - // 如果为空就保存 - if (Objects.isNull(examinationFinancials)) { - examinationFinancials = new ExaminationFinancials(); - examinationFinancials.setBalance(new BigDecimal(1000000)); - examinationFinancials.setInitBalance(new BigDecimal(1000000)); - examinationFinancials.setProductAssets(new BigDecimal(0)); - examinationFinancials.setCreatedAt(new Date()); - examinationFinancials.setUserId(users.getId()); - examinationFinancials.setType(examinations.getType()); - KeyHolder keyHolder = examinationFinancialsService.insertReturnKey(examinationFinancials); - userExaminations.setFinancialId(Long.valueOf(keyHolder.getKey().toString())); - } else { - userExaminations.setFinancialId(examinationFinancials.getId()); - } - } - /* - 判断teamid - 根据条件查找,如果没有就根据条件创建一条数据 - */ - if (teamId > 0) { - ExaminationInstances examinationInstances = examinationInstancesService - .examinationFinancialByQuery(teamId, examinations.getId(), examinations.getFlowId()); - // 如果为空就保存 - if (examinationInstances == null) { - examinationInstances = new ExaminationInstances(); - examinationInstances.setTeamId(teamId); - examinationInstances.setExaminationId(examinations.getId()); - examinationInstances.setFlowId(examinations.getFlowId()); - - examinationInstances.setStatus(0); - examinationInstances.setCreatedAt(new Date()); - examinationInstances.setUpdatedAt(new Date()); - examinationInstances.setFinishStep(0); - - KeyHolder keyHolder = examinationInstancesService.insertReturnKey(examinationInstances); - userExaminations.setInstanceId(Long.valueOf(keyHolder.getKey().toString())); - } else { - userExaminations.setInstanceId(examinationInstances.getId()); - } - } else { - ExaminationInstances examinationInstances = new ExaminationInstances(); - examinationInstances.setExaminationId(examinations.getId()); - examinationInstances.setFlowId(examinations.getFlowId()); - examinationInstances.setStatus(0); - - examinationInstances.setCreatedAt(new Date()); - examinationInstances.setUpdatedAt(new Date()); - examinationInstances.setFinishStep(0); - examinationInstances.setTeamId(0L); - - KeyHolder keyHolder = examinationInstancesService.insertReturnKey(examinationInstances); - userExaminations.setInstanceId(Long.valueOf(keyHolder.getKey().toString())); - } - - if (examinations.getMode() == 1) { - UserTeams userTeams = new UserTeams(); - userTeams.setTeamId(teamId); - userTeams.setUserId(users.getId()); - userTeams = userTeamsService.userTeamsByQuery(userTeams); - if (userTeams != null) { - String roles = userTeams.getRoles() == null ? "[]" : userTeams.getRoles(); - userExaminations.setData(JsonMergeUtil.twoJsonMerge(userExaminations.getData() == null ? "{}" : userExaminations.getData(), - "{roles:" + roles + "}")); - } - } else { - userExaminations.setData(JsonMergeUtil.twoJsonMerge(userExaminations.getData() == null ? "{}" : userExaminations.getData(), flows.getData())); - } - userExaminations.setCreatedAt(new Date()); - userExaminationsDao.insert(userExaminations); - } - ExaminationInstances examinationInstances = examinationInstancesService.queryById(userExaminations.getInstanceId()); + final Examinations examinations = examinationsService.getOrInitExamination(examinationId, flows, isTeam); + final UserExaminations userExaminations = getOrInitUserExamination(users, teamId, examinations, flows); + final ExaminationInstances instances = examinationInstancesService.queryById(userExaminations.getInstanceId()); examinations.set("examinationId", examinations.getId()); examinations.setFlowId(examinations.getFlowId()); @@ -311,29 +151,103 @@ public class UserExaminationsService extends CoreBaseService { examinations.setMode(examinations.getMode()); examinations.setType(examinations.getType()); examinations.setEndTime(examinations.getEndTime()); - examinations.set("instance_id", examinationInstances != null ? examinationInstances.getId() : null); + examinations.set("instance_id", instances != null ? instances.getId() : null); examinations.set("examinationInstId", userExaminations.getId()); - examinations.set("finishStep", examinationInstances != null ? examinationInstances.getFinishStep() == null ? 0 : examinationInstances.getFinishStep() : 0); + examinations.set("finishStep", instances != null ? instances.getFinishStep() == null ? 0 : instances.getFinishStep() : 0); examinations.set("finishTime", userExaminations.getFinishTime() == null ? false : userExaminations.getFinishTime()); examinations.set("flowStep", JSONObject.parseObject(flows.getData()).getByteValue("step")); examinations.set("isTeam", isTeam); examinations.set("teamId", teamId); - return examinations; } + private UserExaminations getOrInitUserExamination(Users users, Long teamId, Examinations examinations, Flows flows) { + // 根据条件查询userExaminations + UserExaminations userExaminations = userExaminationsDao.getPracticeModeValue(teamId, examinations, users); + if (userExaminations != null) { + return userExaminations; + } + // 如果查询为空,就返回一个新的对象 + userExaminations = new UserExaminations(); + userExaminations.setTeamId(teamId); + userExaminations.setExaminationId(examinations.getId()); + userExaminations.setFlowId(examinations.getFlowId()); + userExaminations.setUserId(users.getId()); + userExaminations.setClassId(users.getClassId()); + userExaminations.setStatus(0); + userExaminations.setClassOrders(0); + userExaminations.setTeamOrders(0); + + final ExaminationInstances instances = examinationInstancesService.getOrInitInstance(users, teamId, examinations.getId(), examinations.getFlowId()); + userExaminations.setInstanceId(instances.getId()); + + if (examinations.getMode() == 1) { + UserTeams userTeams = new UserTeams(); + userTeams.setTeamId(teamId); + userTeams.setUserId(users.getId()); + userTeams = userTeamsService.userTeamsByQuery(userTeams); + if (userTeams != null) { + String roles = userTeams.getRoles() == null ? "[]" : userTeams.getRoles(); + userExaminations.setData(JsonMergeUtil.twoJsonMerge(userExaminations.getData() == null ? "{}" : userExaminations.getData(), + "{roles:" + roles + "}")); + } + } else { + userExaminations.setData(JsonMergeUtil.twoJsonMerge(userExaminations.getData() == null ? "{}" : userExaminations.getData(), flows.getData())); + } + userExaminations.setCreatedAt(new Date()); + userExaminations.setId(userExaminationsDao.insertReturnKey(userExaminations).getLong()); + return userExaminations; + } + public List getByExaminationIdAndUserId(UserExaminations userExaminations) { return userExaminationsDao.getByExaminationIdAndUserId(userExaminations); } /** * 学生实训分数列表 - * - * @param userExaminationsQuery - * @return */ public PageQuery getStudentExaminationScoreList(UserExaminationsQuery userExaminationsQuery) { - return userExaminationsDao.getStudentExaminationScoreList(userExaminationsQuery.getPageQuery(), userExaminationsQuery); + final Long examinationId = userExaminationsQuery.getExaminationId(); + final List notParticipatingUsers = this.notParticipatingUsers(examinationId); + if (!notParticipatingUsers.isEmpty()) { + // 未提交实训/未参与实训的学生记0分 + final Examinations examinations = examinationsService.queryById(examinationId); + if (examinations == null) { + throw new GlobalException("未查询到实训考核!"); + } + List notParticipatingList = new ArrayList<>(); + for (UserExaminations u : notParticipatingUsers) { + final UserExaminations nue = UserExaminationsService.noScoreUserExamination(examinationId, examinations.getFlowId(), u.getTeamId()); + nue.setUserId(u.getUserId()); + nue.setClassId(u.getClassId()); + final KeyHolder neiKey = examinationInstancesService + .insertReturnKey(ExaminationInstancesService.noScoreInstance(examinationId, examinations.getFlowId(), u.getTeamId())); + nue.setInstanceId(neiKey.getLong()); + notParticipatingList.add(nue); + } + if (!notParticipatingList.isEmpty()) { + this.insertBatch(notParticipatingList); + } + } + final PageQuery ses = userExaminationsDao.getStudentExaminationScoreList(userExaminationsQuery.getPageQuery(), userExaminationsQuery); + List updateList = new ArrayList<>(); + for (UserExaminations ue : ses.getList()) { + if (ue.getStatus() < 1) { + final UserExaminations updateUE = new UserExaminations(); + updateUE.setId(ue.getId()); + if (StringUtils.isEmpty(ue.getReportFile()) || StringUtils.isEmpty(ue.getReportName())) { + updateUE.setReportScores(BigDecimal.ZERO); + updateUE.setStatus(2); + } else { + updateUE.setStatus(1); + } + updateList.add(updateUE); + } + } + if (!updateList.isEmpty()) { + this.updateBatchTemplate(updateList); + } + return ses; } /** @@ -402,14 +316,8 @@ public class UserExaminationsService extends CoreBaseService { examinationInstancesService.updateTemplate(updateInstance); } - public void sumTotalScores(UserExaminations userExaminations, Examinations examinations, Flows flows) { - UserExaminations updateUserExam = new UserExaminations(); - updateUserExam.setId(userExaminations.getId()); - updateUserExam.setStatus(userExaminations.getStatus()); - updateUserExam.setFinishTime(userExaminations.getFinishTime()); // 考核完成时间 - - final ExaminationInstances examinationInstances = examinationInstancesService.queryById(userExaminations.getInstanceId()); - + public void sumTotalScores(UserExaminations updateUserExam, Examinations examinations, Flows flows) { + final ExaminationInstances examinationInstances = examinationInstancesService.queryById(updateUserExam.getInstanceId()); final Configs scoreSetting = configsService.getScoreSetting(examinations.getTeacherId()); // 实训时长的,实训模式下,如果流程没完成,这项成绩就算是0 updateUserExam.setDurationScores(BigDecimal.ZERO); @@ -423,29 +331,41 @@ public class UserExaminationsService extends CoreBaseService { } } } - - // 实训模式,流程准确性评分 - final int deductionScore = operateScoresService.totalDeductionScore(userExaminations.getId()); - updateUserExam.setOperatorScores(BigDecimal.valueOf(100 - deductionScore)); - - // 资产增长率评分 final BigDecimal bigDecimal100 = BigDecimal.valueOf(100); - final ExaminationFinancials financials = examinationFinancialsService.queryById(userExaminations.getFinancialId()); - final BigDecimal initBalance = getOrDefaultDecimal(financials.getInitBalance()); - final BigDecimal raiseRate = (getOrDefaultDecimal(financials.getBalance()) - .add(getOrDefaultDecimal(financials.getProductAssets())) - .subtract(initBalance)).divide(initBalance, RoundingMode.HALF_UP) - .multiply(bigDecimal100).setScale(2, RoundingMode.HALF_UP); - - for (ConfigsSet confRaise : scoreSetting.getRaiseSet()) { - if (raiseRate.compareTo(confRaise.getMin()) >= 0 && raiseRate.compareTo(confRaise.getMax()) < 0) { - updateUserExam.setRaiseScores(confRaise.getScores()); - updateUserExam.setRaiseRate(raiseRate); - ExaminationFinancials updateEF = new ExaminationFinancials(); - updateEF.setId(financials.getId()); - updateEF.setRaiseRate(raiseRate); - examinationFinancialsService.updateTemplate(updateEF); - break; + // 未参加考核 + boolean notParticipating = examinationInstances.getFinishStep() == null || examinationInstances.getFinishStep() < 1; + // 实训模式,流程准确性评分,未参加考核记0分 + if (notParticipating) { + updateUserExam.setOperatorScores(BigDecimal.ZERO); + } else { + final int deductionScore = operateScoresService.totalDeductionScore(updateUserExam.getId()); + final int deductionScoreByFinishStep = operateScoresService + .getDeductionScoreByFinishStep(updateUserExam.getId(), updateUserExam.getFlowId(), examinationInstances.getFinishStep()); + updateUserExam.setOperatorScores(BigDecimal.valueOf(100 - deductionScore - deductionScoreByFinishStep)); + } + + if (notParticipating) { + updateUserExam.setRaiseScores(BigDecimal.ZERO); + updateUserExam.setRaiseRate(BigDecimal.ZERO); + } else { + // 资产增长率评分 + final ExaminationInstances financials = examinationInstancesService.queryById(updateUserExam.getInstanceId()); + final BigDecimal initBalance = getOrDefaultDecimal(financials.getInitBalance()); + final BigDecimal raiseRate = (getOrDefaultDecimal(financials.getBalance()) + .add(getOrDefaultDecimal(financials.getProductAssets())) + .subtract(initBalance)).divide(initBalance, RoundingMode.HALF_UP) + .multiply(bigDecimal100).setScale(2, RoundingMode.HALF_UP); + + for (ConfigsSet confRaise : scoreSetting.getRaiseSet()) { + if (raiseRate.compareTo(confRaise.getMin()) >= 0 && raiseRate.compareTo(confRaise.getMax()) < 0) { + updateUserExam.setRaiseScores(confRaise.getScores()); + updateUserExam.setRaiseRate(raiseRate); + ExaminationInstances updateEI = new ExaminationInstances(); + updateEI.setId(financials.getId()); + updateEI.setRaiseRate(raiseRate); + examinationInstancesService.updateTemplate(updateEI); + break; + } } } @@ -457,7 +377,7 @@ public class UserExaminationsService extends CoreBaseService { updateUserExam.setFlowScores(flowScore); BigDecimal totalScores = getScoreByRate(flowScore, scoreSetting.getFlowRate()) - .add(getScoreByRate(userExaminations.getReportScores(), scoreSetting.getReportRate())) + .add(getScoreByRate(updateUserExam.getReportScores(), scoreSetting.getReportRate())) .add(getScoreByRate(updateUserExam.getRaiseScores(), scoreSetting.getRaiseRate())) .add(getScoreByRate(updateUserExam.getDurationScores(), scoreSetting.getDurationRate())) .add(getScoreByRate(updateUserExam.getOperatorScores(), scoreSetting.getOperatorRate())); @@ -487,10 +407,6 @@ public class UserExaminationsService extends CoreBaseService { updateUE.setReportName(ue.getReportName()); updateUE.setUpdatedAt(new Date()); - final Flows flows = flowsService.queryById(userExaminations.getFlowId()); - - // 保存流程进度 - examinationInstancesService.finishStep(userExaminations.getInstanceId(), flows.getStep() + 1); // 保存流程报告 this.updateTemplate(updateUE); } @@ -518,7 +434,88 @@ public class UserExaminationsService extends CoreBaseService { return userExaminationsDao.notParticipatingUsers(examinationId); } - public static UserExaminations initUserExamination(Long examinationId, Long flowId) { + /** + * 练习模式设置积分,完成一个流程的个人或者团队练习,给积分。五个流程,每走完一遍个人练习流程得20积分, + * 每走完一遍团队练习团队中每人得50积分,走完全部五个流程的个人练习模式,奖励100积分; + * 走完全部五个流程的团队模式,奖励200积分。学生端界面显示学生的练习积分及班级排名。 + * + * @param userId 学生ID + * @param classId 学生班级ID + * @return classOrder班级排名 integral积分 + */ + public Map practiceModeIntegral(Long userId, Long classId) { + Map result = new HashMap<>(); + result.put("integral", 0); + final List ues = userExaminationsDao.practiceModeIntegralStatistics(classId); + + final Map> collect = ues.stream().collect(Collectors.groupingBy(UserExaminations::getUserId)); + if (!collect.containsKey(userId)) { + // 没有成绩 + result.put("classOrder", collect.keySet().size() + 1); + return result; + } + + List integrals = new ArrayList<>(); + for (Long sid : collect.keySet()) { + final UserExaminations ue = new UserExaminations(); + ue.setUserId(sid); + ue.setClassOrders(getStudentIntegral(collect.get(sid))); + integrals.add(ue); + } + integrals.sort(Comparator.comparing(UserExaminations::getClassOrders)); + Collections.reverse(integrals); + + int classOrder = 1; + for (UserExaminations integral : integrals) { + if (Objects.equals(integral.getUserId(), userId)) { + result.put("classOrder", classOrder); + result.put("integral", integral.getClassOrders()); + break; + } + classOrder++; + } + return result; + } + + private int getStudentIntegral(List userExaminations) { + if (userExaminations == null || userExaminations.isEmpty()) { + return 0; + } + final Map> collect = + userExaminations.stream().filter(i -> i.getMode() != null) + .collect(Collectors.groupingBy(UserExaminations::getMode)); + int totalIntegral = 0; + for (Integer mode : collect.keySet()) { + final List modeUEs = collect.get(mode); + Set flowIds = new HashSet<>(); + for (UserExaminations modeUE : modeUEs) { + flowIds.add(modeUE.getFlowId()); + } + // 完成全部五条流程 + boolean allFlow = flowIds.size() > 4; + if (mode == 0) { + // 个人模式20积分 + totalIntegral += modeUEs.size() * 20; + // 走完全部五个流程的个人练习模式,奖励100积分; + if (allFlow) { + totalIntegral += 100; + } + } else { + // 团队模式50积分 + totalIntegral += modeUEs.size() * 50; + // 走完全部五个流程的团队模式,奖励200积分 + if (allFlow) { + totalIntegral += 200; + } + } + } + return totalIntegral; + } + + /** + * 初始化没有成绩的学生实训考核 + */ + public static UserExaminations noScoreUserExamination(Long examinationId, Long flowId, Long teamId) { final UserExaminations nue = new UserExaminations(); nue.setCreatedAt(new Date()); nue.setExaminationId(examinationId); @@ -529,6 +526,11 @@ public class UserExaminationsService extends CoreBaseService { nue.setDurationScores(BigDecimal.ZERO); nue.setTotalScores(BigDecimal.ZERO); nue.setOperatorScores(BigDecimal.ZERO); + nue.setTeamId(teamId == null ? 0L : teamId); + nue.setStatus(2); // 已评分 + nue.setFinishTime(new Date()); + nue.setClassOrders(0); + nue.setTeamOrders(0); return nue; } diff --git a/web/src/main/java/com/ibeetl/jlw/service/UsersService.java b/web/src/main/java/com/ibeetl/jlw/service/UsersService.java index d3fc682..b599037 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/UsersService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/UsersService.java @@ -1,7 +1,6 @@ package com.ibeetl.jlw.service; import cn.jlw.Exception.GlobalException; -import cn.jlw.util.JWTUtil; import cn.jlw.util.JsonMergeUtil; import cn.jlw.util.SztzjyRequestUtil; import com.alibaba.fastjson.JSON; @@ -14,11 +13,9 @@ import com.ibeetl.jlw.dao.ClassesDao; import com.ibeetl.jlw.dao.FlowsDao; import com.ibeetl.jlw.dao.UsersDao; import com.ibeetl.jlw.entity.*; -import com.ibeetl.jlw.web.query.ClassesQuery; import com.ibeetl.jlw.web.query.TeamsQuery; import com.ibeetl.jlw.web.query.UsersQuery; import org.beetl.sql.core.engine.PageQuery; -import org.beetl.sql.core.query.LambdaQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/web/src/main/java/com/ibeetl/jlw/web/ExaminationFinancialsController.java b/web/src/main/java/com/ibeetl/jlw/web/ExaminationFinancialsController.java deleted file mode 100644 index 1987022..0000000 --- a/web/src/main/java/com/ibeetl/jlw/web/ExaminationFinancialsController.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.ibeetl.jlw.web; - -import cn.jlw.Interceptor.FinancialAuth; -import cn.jlw.Interceptor.FinancialUser; -import cn.jlw.validate.ValidateConfig; -import com.ibeetl.admin.core.annotation.Function; -import com.ibeetl.admin.core.file.FileService; -import com.ibeetl.admin.core.web.JsonResult; -import com.ibeetl.jlw.entity.ExaminationFinancials; -import com.ibeetl.jlw.entity.Users; -import com.ibeetl.jlw.service.ExaminationFinancialsService; -import com.ibeetl.jlw.service.UsersService; -import com.ibeetl.jlw.web.query.ExaminationFinancialsQuery; -import io.swagger.annotations.ApiModelProperty; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.beetl.sql.core.engine.PageQuery; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.validation.BindingResult; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.servlet.ModelAndView; - -import javax.servlet.http.HttpServletRequest; -import java.util.List; -import java.util.Objects; - -/** - * ExaminationFinancials 接口 - * 切记不要对非线程安全的静态变量进行写操作,增删改后,请使用@LoadInit重新加载 - */ - -@Controller -public class ExaminationFinancialsController { - - private final Log log = LogFactory.getLog(this.getClass()); - private static final String MODEL = "/jlw/examinationFinancials"; - private static final String API = "/api/examinationFinancials"; - - - @Autowired - private ExaminationFinancialsService examinationFinancialsService; - - @Autowired - FileService fileService; - - /* 前端接口 */ - - /** - * 我的资产概况 - */ - @ApiModelProperty("学生端-资产概况 0 练习模式 1 实训模式") - @GetMapping(API + "/financial") - @FinancialAuth - @ResponseBody - public JsonResult financial(Integer type, @FinancialUser Users users) { -// return JsonResult.success(examinationFinancialsService.financial(users, Objects.isNull(type) ? 0 : type)); - return examinationFinancialsService.queryStudentAssetsInformation(users.getId(), Objects.isNull(type) ? 0 : type); - } - - - /* 后台页面 */ - - @GetMapping(MODEL + "/index.do") - @Function("examinationFinancials.query") - @ResponseBody - public ModelAndView index() { - ModelAndView view = new ModelAndView("/jlw/examinationFinancials/index.html"); - view.addObject("search", ExaminationFinancialsQuery.class.getName()); - return view; - } - - @GetMapping(MODEL + "/edit.do") - @Function("examinationFinancials.edit") - @ResponseBody - public ModelAndView edit(Integer id) { - ModelAndView view = new ModelAndView("/jlw/examinationFinancials/edit.html"); - ExaminationFinancials examinationFinancials = examinationFinancialsService.queryById(id); - view.addObject("examinationFinancials", examinationFinancials); - return view; - } - - @GetMapping(MODEL + "/add.do") - @Function("examinationFinancials.add") - @ResponseBody - public ModelAndView add() { - ModelAndView view = new ModelAndView("/jlw/examinationFinancials/add.html"); - return view; - } - - /* 后台接口 */ - - @PostMapping(MODEL + "/list.json") - @Function("examinationFinancials.query") - @ResponseBody - public JsonResult list(ExaminationFinancialsQuery condition) { - PageQuery page = condition.getPageQuery(); - examinationFinancialsService.queryByCondition(page); - return JsonResult.success(page); - } - - @PostMapping(MODEL + "/add.json") - @Function("examinationFinancials.add") - @ResponseBody - public JsonResult add(@Validated(ValidateConfig.ADD.class) ExaminationFinancials examinationFinancials, BindingResult result) { - if (result.hasErrors()) { - return JsonResult.failMessage(result); - } else { - examinationFinancialsService.save(examinationFinancials); - return JsonResult.success(); - } - } - - @PostMapping(MODEL + "/edit.json") - @Function("examinationFinancials.edit") - @ResponseBody - public JsonResult update(@Validated(ValidateConfig.UPDATE.class) ExaminationFinancials examinationFinancials, BindingResult result) { - if (result.hasErrors()) { - return JsonResult.failMessage(result); - } else { - boolean success = examinationFinancialsService.updateTemplate(examinationFinancials); - if (success) { - return JsonResult.success(); - } else { - return JsonResult.failMessage("更新失败"); - } - } - } - - - @GetMapping(MODEL + "/view.json") - @Function("examinationFinancials.query") - @ResponseBody - public JsonResult queryInfo(Integer id) { - ExaminationFinancials examinationFinancials = examinationFinancialsService.queryById(id); - return JsonResult.success(examinationFinancials); - } - - @GetMapping(MODEL + "/getValues.json") - @ResponseBody - public JsonResult> getValues(ExaminationFinancialsQuery param) { - List list = examinationFinancialsService.getValuesByQuery(param); - return JsonResult.success(list); - } - - - @PostMapping(MODEL + "/delete.json") - @Function("examinationFinancials.delete") - @ResponseBody - public JsonResult delete(String ids) { - examinationFinancialsService.deleteExaminationFinancials(ids); - return JsonResult.success(); - } - - -} diff --git a/web/src/main/java/com/ibeetl/jlw/web/ExaminationInstancesController.java b/web/src/main/java/com/ibeetl/jlw/web/ExaminationInstancesController.java index a7bc577..9e4d52a 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/ExaminationInstancesController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/ExaminationInstancesController.java @@ -1,154 +1,50 @@ package com.ibeetl.jlw.web; -import cn.jlw.validate.ValidateConfig; -import com.ibeetl.admin.core.file.FileService; +import cn.jlw.Interceptor.FinancialAuth; +import cn.jlw.Interceptor.FinancialUser; import com.ibeetl.admin.core.web.JsonResult; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.beetl.sql.core.engine.PageQuery; -import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.servlet.ModelAndView; +import io.swagger.annotations.ApiModelProperty; +import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import com.ibeetl.admin.core.annotation.Function; import com.ibeetl.jlw.entity.*; import com.ibeetl.jlw.service.*; -import com.ibeetl.jlw.web.query.*; -import java.util.List; +import java.util.Objects; /** * ExaminationInstances 接口 * 切记不要对非线程安全的静态变量进行写操作,增删改后,请使用@LoadInit重新加载 */ -@Controller -public class ExaminationInstancesController{ - - private final Log log = LogFactory.getLog(this.getClass()); - private static final String MODEL = "/jlw/examinationInstances"; - private static final String API = "/api/examinationInstances"; +@RestController +@RequestMapping("/api/examinationInstances") +public class ExaminationInstancesController { - @Autowired private ExaminationInstancesService examinationInstancesService; - @Autowired - FileService fileService; + private ExaminationInstancesService examinationInstancesService; - /* 前端接口 */ + /** + * 我的资产概况 + */ + @ApiModelProperty("学生端-资产概况 0 练习模式 1 实训模式") + @GetMapping("/financial") + @FinancialAuth + public JsonResult financial(Integer type, @FinancialUser Users users) { + return examinationInstancesService.queryStudentAssetsInformation(users.getId(), Objects.isNull(type) ? 0 : type); + } /** * 考核完成步骤加一 + * * @param id 考核实例id examination_instances 表的id */ - @PostMapping(API + "/finishStep/{id}/{step}") - @ResponseBody + @PostMapping("/finishStep/{id}/{step}") public JsonResult finishStep(@PathVariable Long id, @PathVariable Integer step) { examinationInstancesService.finishStep(id, step); return JsonResult.success(); } - - /* 后台页面 */ - - @GetMapping(MODEL + "/index.do") - @Function("examinationInstances.query") - @ResponseBody - public ModelAndView index() { - ModelAndView view = new ModelAndView("/jlw/examinationInstances/index.html") ; - view.addObject("search", ExaminationInstancesQuery.class.getName()); - return view; - } - - @GetMapping(MODEL + "/edit.do") - @Function("examinationInstances.edit") - @ResponseBody - public ModelAndView edit(Integer id) { - ModelAndView view = new ModelAndView("/jlw/examinationInstances/edit.html"); - ExaminationInstances examinationInstances = examinationInstancesService.queryById(id); - view.addObject("examinationInstances", examinationInstances); - return view; - } - - @GetMapping(MODEL + "/add.do") - @Function("examinationInstances.add") - @ResponseBody - public ModelAndView add() { - ModelAndView view = new ModelAndView("/jlw/examinationInstances/add.html"); - return view; - } - - /* 后台接口 */ - - @PostMapping(MODEL + "/list.json") - @Function("examinationInstances.query") - @ResponseBody - public JsonResult list(ExaminationInstancesQuery condition){ - PageQuery page = condition.getPageQuery(); - examinationInstancesService.queryByCondition(page); - return JsonResult.success(page); - } - - @PostMapping(MODEL + "/add.json") - @Function("examinationInstances.add") - @ResponseBody - public JsonResult add(@Validated(ValidateConfig.ADD.class)ExaminationInstances examinationInstances, BindingResult result){ - if(result.hasErrors()){ - return JsonResult.failMessage(result); - }else{ - examinationInstancesService.save(examinationInstances); - return JsonResult.success(); - } - } - - @PostMapping(MODEL + "/edit.json") - @Function("examinationInstances.edit") - @ResponseBody - public JsonResult update(@Validated(ValidateConfig.UPDATE.class) ExaminationInstances examinationInstances, BindingResult result) { - if(result.hasErrors()){ - return JsonResult.failMessage(result); - }else { - boolean success = examinationInstancesService.updateTemplate(examinationInstances); - if (success) { - return JsonResult.success(); - } else { - return JsonResult.failMessage("更新失败"); - } - } - } - - - @GetMapping(MODEL + "/view.json") - @Function("examinationInstances.query") - @ResponseBody - public JsonResultqueryInfo(Integer id) { - ExaminationInstances examinationInstances = examinationInstancesService.queryById( id); - return JsonResult.success(examinationInstances); - } - - @GetMapping(MODEL + "/getValues.json") - @ResponseBody - public JsonResult>getValues(ExaminationInstancesQuery param) { - Listlist = examinationInstancesService.getValuesByQuery(param); - return JsonResult.success(list); - } - - - @PostMapping(MODEL + "/delete.json") - @Function("examinationInstances.delete") - @ResponseBody - public JsonResult delete(String ids) { - examinationInstancesService.deleteExaminationInstances(ids); - return JsonResult.success(); - } - - } diff --git a/web/src/main/java/com/ibeetl/jlw/web/UserExaminationsController.java b/web/src/main/java/com/ibeetl/jlw/web/UserExaminationsController.java index 3c8bdd4..7edb9ba 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/UserExaminationsController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/UserExaminationsController.java @@ -7,13 +7,9 @@ import cn.jlw.Interceptor.FinancialUser; import cn.jlw.util.BusinessUtils; import cn.jlw.validate.ValidateConfig; import com.alibaba.excel.EasyExcel; -import com.ibeetl.admin.core.annotation.Function; import com.ibeetl.admin.core.web.JsonResult; import com.ibeetl.admin.core.web.JsonReturnCode; -import com.ibeetl.jlw.entity.ExaminationScore; -import com.ibeetl.jlw.entity.UserExaminations; -import com.ibeetl.jlw.entity.UserExaminationsExcel; -import com.ibeetl.jlw.entity.Users; +import com.ibeetl.jlw.entity.*; import com.ibeetl.jlw.service.UserExaminationsService; import com.ibeetl.jlw.web.query.ExaminationInstancesQuery; import com.ibeetl.jlw.web.query.UserExaminationsQuery; @@ -25,10 +21,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; -import java.math.BigDecimal; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.*; @@ -42,11 +36,6 @@ import java.util.*; @RequestMapping("/api/userExaminations") public class UserExaminationsController { -// private final Log log = LogFactory.getLog(this.getClass()); -// private static final String MODEL = "/jlw/userExaminations"; -// private static final String API = "/api/userExaminations"; -// @Value("${server.servlet.context-path}") -// private String contextPath; @Value("${report_file_path}") private String reportFilePath; @@ -56,22 +45,17 @@ public class UserExaminationsController { /** * 学生创建实训/练习实例 个人 - * - * @Date 2022-07-22 14:51 */ @GetMapping("/addUserExaminationInst.json") @FinancialAuth @AliasProcessor - public JsonResult addUserExaminationInst(ExaminationInstancesQuery examinationInstancesQuery, @FinancialUser Users users) { - + public JsonResult addUserExaminationInst(ExaminationInstancesQuery examinationInstancesQuery, @FinancialUser Users users) { if (examinationInstancesQuery.getFlowId() == null) { return JsonResult.failMessage("流程id不能为空"); } - //判空,空就默认为0 examinationInstancesQuery.setIsTeam(BusinessUtils.integerValueJudgment(examinationInstancesQuery.getIsTeam())); examinationInstancesQuery.setTeamId(BusinessUtils.logValueJudgment(examinationInstancesQuery.getTeamId())); - return JsonResult.success(userExaminationsService.addUserExamination(users, examinationInstancesQuery.getFlowId(), examinationInstancesQuery.getExaminationId(), examinationInstancesQuery.getIsTeam(), examinationInstancesQuery.getTeamId())); } @@ -81,7 +65,7 @@ public class UserExaminationsController { @GetMapping("/scoresListOfStudent.json") @FinancialAuth @AliasProcessor - public JsonResult scoresListOfStudent(UserExaminationsQuery condition, @FinancialUser Users users) { + public JsonResult> scoresListOfStudent(UserExaminationsQuery condition, @FinancialUser Users users) { return JsonResult.success(userExaminationsService.scoresListOfStudent(users, condition.getPageQuery())); } @@ -90,7 +74,7 @@ public class UserExaminationsController { */ @GetMapping("/myScores.json") @FinancialAuth - public JsonResult myScores(@FinancialUser Users users) { + public JsonResult myScores(@FinancialUser Users users) { return JsonResult.success(userExaminationsService.myScores(users)); } @@ -109,13 +93,6 @@ public class UserExaminationsController { } } - @PostMapping("/delete.json") - @Function("userExaminations.delete") - public JsonResult delete(String ids) { - userExaminationsService.deleteUserExaminations(ids); - return JsonResult.success(); - } - /** * 学生成绩列表 */ @@ -229,4 +206,13 @@ public class UserExaminationsController { userExaminationsService.examinationReport(ue); return JsonResult.success(); } + + /** + * 学生提交实训报告 + */ + @GetMapping("/practiceModeIntegral") + @FinancialAuth + public JsonResult> practiceModeIntegral(@FinancialUser Users user) { + return JsonResult.success(userExaminationsService.practiceModeIntegral(user.getId(), user.getClassId())); + } } diff --git a/web/src/main/java/com/ibeetl/jlw/web/query/ExaminationFinancialsQuery.java b/web/src/main/java/com/ibeetl/jlw/web/query/ExaminationFinancialsQuery.java deleted file mode 100644 index 9bf2993..0000000 --- a/web/src/main/java/com/ibeetl/jlw/web/query/ExaminationFinancialsQuery.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.ibeetl.jlw.web.query; - -import com.ibeetl.jlw.entity.ExaminationFinancials; -import org.apache.commons.lang3.StringUtils; -import com.ibeetl.admin.core.annotation.Query; -import com.ibeetl.admin.core.util.Tool; -import com.ibeetl.admin.core.util.enums.CoreDictType; -import com.ibeetl.admin.core.web.query.PageParam; - -import java.math.BigDecimal; -import java.util.Date; - -/** - *ExaminationFinancials查询 - */ -public class ExaminationFinancialsQuery extends PageParam { - @Query(name = "id", display = true) - private Long id; - @Query(name = "createdAt", display = true) - private Date createdAt; - @Query(name = "updatedAt", display = true) - private Date updatedAt; - @Query(name = "data", display = true) - private String data; - @Query(name = "初始资金", display = true) - private BigDecimal initBalance; - @Query(name = "可用资金", display = true) - private BigDecimal balance; - @Query(name = "存货价值", display = true) - private BigDecimal productAssets; - @Query(name = "资产增长率", display = true) - private BigDecimal raiseRate; - @Query(name = "资产增长率排名", display = true) - private Integer raiseOrders; - public Long getId(){ - return id; - } - public void setId(Long id ){ - this.id = id; - } - public Date getCreatedAt(){ - return createdAt; - } - public void setCreatedAt(Date createdAt ){ - this.createdAt = createdAt; - } - public Date getUpdatedAt(){ - return updatedAt; - } - public void setUpdatedAt(Date updatedAt ){ - this.updatedAt = updatedAt; - } - public String getData(){ - return data; - } - public void setData(String data ){ - this.data = data; - } - public BigDecimal getInitBalance(){ - return initBalance; - } - public void setInitBalance(BigDecimal initBalance ){ - this.initBalance = initBalance; - } - public BigDecimal getBalance(){ - return balance; - } - public void setBalance(BigDecimal balance ){ - this.balance = balance; - } - public BigDecimal getProductAssets(){ - return productAssets; - } - public void setProductAssets(BigDecimal productAssets ){ - this.productAssets = productAssets; - } - public BigDecimal getRaiseRate(){ - return raiseRate; - } - public void setRaiseRate(BigDecimal raiseRate ){ - this.raiseRate = raiseRate; - } - public Integer getRaiseOrders(){ - return raiseOrders; - } - public void setRaiseOrders(Integer raiseOrders ){ - this.raiseOrders = raiseOrders; - } - - public ExaminationFinancials pojo(){ - ExaminationFinancials pojo = new ExaminationFinancials(); - pojo.setId(this.getId()); - pojo.setCreatedAt(this.getCreatedAt()); - pojo.setUpdatedAt(this.getUpdatedAt()); - pojo.setData(this.getData()); - pojo.setInitBalance(this.getInitBalance()); - pojo.setBalance(this.getBalance()); - pojo.setProductAssets(this.getProductAssets()); - pojo.setRaiseRate(this.getRaiseRate()); - pojo.setRaiseOrders(this.getRaiseOrders()); - return pojo; - } - -} diff --git a/web/src/main/resources/application.properties b/web/src/main/resources/application.properties index 8108bbd..aa515ef 100644 --- a/web/src/main/resources/application.properties +++ b/web/src/main/resources/application.properties @@ -78,7 +78,7 @@ quartz.job-store-type=jdbc ResponseControllerAdvice.nThreads=100 -logistics.key = ykIOnbVg6060 +logistics.key = ykIOnbVg606066 logistics.customer = 90F883EF5EB30F659B5B44173E01C8A6 diff --git a/web/src/main/resources/sql/flow/contractsProducts.md b/web/src/main/resources/sql/flow/contractsProducts.md index e939f9a..20962c2 100644 --- a/web/src/main/resources/sql/flow/contractsProducts.md +++ b/web/src/main/resources/sql/flow/contractsProducts.md @@ -53,6 +53,24 @@ and t.protocol_id =#protocolId# +getCurrentAmount +=== + +* 获取当天商品总售价 + +select +sum(t.nums * t2.sell_price) +from contracts_products t +join products t2 on t.product_id = t2.id +where 1 = 1 +@if(!isEmpty(contractId)){ +and t.contract_id =#contractId# +@} +@if(!isEmpty(protocolId)){ +and t.protocol_id =#protocolId# +@} + + getPickupAmountByIds === diff --git a/web/src/main/resources/sql/flow/operateScores.md b/web/src/main/resources/sql/flow/operateScores.md index 242cac3..e3f0c6c 100644 --- a/web/src/main/resources/sql/flow/operateScores.md +++ b/web/src/main/resources/sql/flow/operateScores.md @@ -9,3 +9,16 @@ sum(t.score) total_deduction_score from operate_scores t where t.user_examination_id = #userExaminationId# + +getOperateScoreByType +=== + +* 根据用户考核ID和扣分类型查询总扣分项 + +select + t.* +from operate_scores t +where t.user_examination_id = #userExaminationId# +and t.type in (#join(types)#) +and t.score > 0 + diff --git a/web/src/main/resources/sql/jlw/examinationFinancials.md b/web/src/main/resources/sql/jlw/examinationFinancials.md deleted file mode 100644 index 982d5d4..0000000 --- a/web/src/main/resources/sql/jlw/examinationFinancials.md +++ /dev/null @@ -1,280 +0,0 @@ -examinationFinancialByQuery -=== -* 根据条件获取ExaminationFinancial数据 用于学生创建实训/练习实例 个人业务处理方法 - SELECT - * - FROM - examination_financials - WHERE - type = #type# - AND user_id=#userId# - AND product_assets=0 - LIMIT 0,1 - -getExaminationsAndUserExaminations -=== - -* 获取资产概况所需要的UserExaminations - SELECT - * - FROM - user_examinations ue - LEFT JOIN examinations es ON ue.examination_id = es.id - WHERE - ue.user_id = #id# - AND es.type = #type# - @if(type==1){ - AND es.`status` >= 1 - @} - ORDER BY - ue.`id` DESC - LIMIT 0,1 - - - -getLastExaminationFinancials -=== - -* 获取资产概况所需要的UserExaminations - SELECT - t1.* - FROM - examination_financials t1 - JOIN user_examinations ue on t1.id = ue.financial_id - JOIN examinations es ON ue.examination_id = es.id - WHERE - t1.user_id = #userId# - AND t1.type = #type# - @if(type==1){ - AND es.status >= 1 - @} - ORDER BY - t1.updated_at DESC, t1.created_at DESC - LIMIT 0,1 - - -getFinancialByExaminationId -=== - -* 根据考核ID查询相关资产信息 - - SELECT - t1.* - FROM - examination_financials t1 - JOIN user_examinations t2 on t2.financial_id = t1.id - JOIN examinations t3 ON t2.examination_id = t3.id - WHERE - t3.id = #examinationId# - ORDER BY - t3.`id` DESC - LIMIT 0,1 - - -getBalanceProductAssets -=== - -* 根据考核ID和角色ID查询资产信息 - - select t1.* from examination_financials t1 - JOIN user_examinations t2 on t2.financial_id = t1.id - WHERE - t2.examination_id = #examinationId# and t2.instance_id = #instanceId# - and JSON_CONTAINS(t2.data->'$.roles', #roleId#) - - -updateBalanceProductAssets -=== - -* 根据考核ID和角色ID修改资产信息 - - update examination_financials t - JOIN user_examinations t2 on t2.financial_id = t.id - SET - @trim(){ - @if(!isEmpty(balance)){ - t.balance =#balance#, - @} - @if(!isEmpty(productAssets)){ - t.product_assets =#productAssets#, - @} - @} - WHERE - t2.examination_id = #examinationId# - and JSON_CONTAINS(t2.data->'$.roles', #roleId#) - - -incrementBalance -=== - -* 根据考核ID增加资产信息 - - update examination_financials t1 - JOIN user_examinations t2 on t2.financial_id = t1.id - SET t1.balance = t1.balance + (#amount#) , t1.updated_at=now() - WHERE - t2.examination_id = #examinationId# and t2.instance_id = #instanceId# - and JSON_CONTAINS(t2.data->'$.roles', #roleId#) - - -decrementBalance -=== - -* 根据考核ID减少资产信息 - - update examination_financials t1 - JOIN user_examinations t2 on t2.financial_id = t1.id - SET t1.balance = t1.balance - (#amount#) , t1.updated_at=now() - WHERE - t2.examination_id = #examinationId# and t2.instance_id = #instanceId# - and JSON_CONTAINS(t2.data->'$.roles', #roleId#) - - -incrementProductAssets -=== - -* 根据考核ID增加资产信息 - - update examination_financials t1 - JOIN user_examinations t2 on t2.financial_id = t1.id - SET t1.product_assets = t1.product_assets + (#amount#) , t1.updated_at=now() - WHERE - t2.examination_id = #examinationId# and t2.instance_id = #instanceId# - and JSON_CONTAINS(t2.data->'$.roles', #roleId#) - - -decrementProductAssets -=== - -* 根据考核ID减少资产信息 - - update examination_financials t1 - JOIN user_examinations t2 on t2.financial_id = t1.id - SET t1.product_assets = t1.product_assets - (#amount#) , t1.updated_at=now() - WHERE - t2.examination_id = #examinationId# and t2.instance_id = #instanceId# - and JSON_CONTAINS(t2.data->'$.roles', #roleId#) - - -queryByCondition -=== -* 根据不为空的参数进行分页查询 - - select - @pageTag(){ - t.* - @} - from examination_financials t - where 1=1 - @//数据权限,该sql语句功能点,如果不考虑数据权限,可以删除此行 - and #function("examinationFinancials.query")# - @if(!isEmpty(id)){ - and t.id =#id# - @} - @if(!isEmpty(createdAt)){ - and t.created_at =#createdAt# - @} - @if(!isEmpty(updatedAt)){ - and t.updated_at =#updatedAt# - @} - @if(!isEmpty(data)){ - and t.data =#data# - @} - @if(!isEmpty(initBalance)){ - and t.init_balance =#initBalance# - @} - @if(!isEmpty(balance)){ - and t.balance =#balance# - @} - @if(!isEmpty(productAssets)){ - and t.product_assets =#productAssets# - @} - @if(!isEmpty(raiseRate)){ - and t.raise_rate =#raiseRate# - @} - @if(!isEmpty(raiseOrders)){ - and t.raise_orders =#raiseOrders# - @} - - - -deleteExaminationFinancialsByIds -=== - -* 批量删除 - - delete from examination_financials where find_in_set(id,#ids#) - - -getExaminationFinancialsValues -=== - -* 根据不为空的参数进行查询 - - select t.* - from examination_financials t - where 1=1 - @if(!isEmpty(id)){ - and t.id =#id# - @} - @if(!isEmpty(createdAt)){ - and t.created_at =#createdAt# - @} - @if(!isEmpty(updatedAt)){ - and t.updated_at =#updatedAt# - @} - @if(!isEmpty(data)){ - and t.data =#data# - @} - @if(!isEmpty(initBalance)){ - and t.init_balance =#initBalance# - @} - @if(!isEmpty(balance)){ - and t.balance =#balance# - @} - @if(!isEmpty(productAssets)){ - and t.product_assets =#productAssets# - @} - @if(!isEmpty(raiseRate)){ - and t.raise_rate =#raiseRate# - @} - @if(!isEmpty(raiseOrders)){ - and t.raise_orders =#raiseOrders# - @} - - -getValuesByQuery -=== - -* 根据不为空的参数进行查询 - - select t.* - from examination_financials t - where 1=1 - @if(!isEmpty(id)){ - and t.id =#id# - @} - @if(!isEmpty(createdAt)){ - and t.created_at =#createdAt# - @} - @if(!isEmpty(updatedAt)){ - and t.updated_at =#updatedAt# - @} - @if(!isEmpty(data)){ - and t.data =#data# - @} - @if(!isEmpty(initBalance)){ - and t.init_balance =#initBalance# - @} - @if(!isEmpty(balance)){ - and t.balance =#balance# - @} - @if(!isEmpty(productAssets)){ - and t.product_assets =#productAssets# - @} - @if(!isEmpty(raiseRate)){ - and t.raise_rate =#raiseRate# - @} - @if(!isEmpty(raiseOrders)){ - and t.raise_orders =#raiseOrders# - @} diff --git a/web/src/main/resources/sql/jlw/examinationInstances.md b/web/src/main/resources/sql/jlw/examinationInstances.md index f54dd7d..12174c1 100644 --- a/web/src/main/resources/sql/jlw/examinationInstances.md +++ b/web/src/main/resources/sql/jlw/examinationInstances.md @@ -10,137 +10,66 @@ examinationFinancialByQuery AND examination_id=#examinationId# AND flow_id=#flowId# -queryByCondition -=== -* 根据不为空的参数进行分页查询 - - select - @pageTag(){ - t.* - @} - from examination_instances t - where 1=1 - @//数据权限,该sql语句功能点,如果不考虑数据权限,可以删除此行 - and #function("examinationInstances.query")# - @if(!isEmpty(id)){ - and t.id =#id# - @} - @if(!isEmpty(createdAt)){ - and t.created_at =#createdAt# - @} - @if(!isEmpty(updatedAt)){ - and t.updated_at =#updatedAt# - @} - @if(!isEmpty(data)){ - and t.data =#data# - @} - @if(!isEmpty(examinationId)){ - and t.examination_id =#examinationId# - @} - @if(!isEmpty(flowId)){ - and t.flow_id =#flowId# - @} - @if(!isEmpty(finishStep)){ - and t.finish_step =#finishStep# - @} - @if(!isEmpty(status)){ - and t.status =#status# - @} - @if(!isEmpty(teamId)){ - and t.team_id =#teamId# - @} - - - -deleteExaminationInstancesByIds + +finishStep === -* 批量删除 +* 完成当前步骤 - delete from examination_instances where find_in_set(id,#ids#) + UPDATE examination_instances + SET finish_step = #step# + WHERE id = #id# and finish_step < #step# - -getExaminationInstancesValues + +getLastExaminationFinancials === -* 根据不为空的参数进行查询 - - select t.* - from examination_instances t - where 1=1 - @if(!isEmpty(id)){ - and t.id =#id# - @} - @if(!isEmpty(createdAt)){ - and t.created_at =#createdAt# - @} - @if(!isEmpty(updatedAt)){ - and t.updated_at =#updatedAt# - @} - @if(!isEmpty(data)){ - and t.data =#data# - @} - @if(!isEmpty(examinationId)){ - and t.examination_id =#examinationId# - @} - @if(!isEmpty(flowId)){ - and t.flow_id =#flowId# - @} - @if(!isEmpty(finishStep)){ - and t.finish_step =#finishStep# - @} - @if(!isEmpty(status)){ - and t.status =#status# - @} - @if(!isEmpty(teamId)){ - and t.team_id =#teamId# - @} - - -getValuesByQuery +* 获取资产概况所需要的UserExaminations + SELECT + t1.* + FROM + examination_instances t1 + JOIN user_examinations ue on t1.id = ue.instance_id + JOIN examinations es ON ue.examination_id = es.id + WHERE + ue.user_id = #userId# + AND es.type = #type# + @if(type==1){ + AND es.status >= 1 + @} + ORDER BY + t1.updated_at DESC, t1.created_at DESC + LIMIT 0,1 + + + +incrementBalance === -* 根据不为空的参数进行查询 - - select t.* - from examination_instances t - where 1=1 - @if(!isEmpty(id)){ - and t.id =#id# - @} - @if(!isEmpty(createdAt)){ - and t.created_at =#createdAt# - @} - @if(!isEmpty(updatedAt)){ - and t.updated_at =#updatedAt# - @} - @if(!isEmpty(data)){ - and t.data =#data# - @} - @if(!isEmpty(examinationId)){ - and t.examination_id =#examinationId# - @} - @if(!isEmpty(flowId)){ - and t.flow_id =#flowId# - @} - @if(!isEmpty(finishStep)){ - and t.finish_step =#finishStep# - @} - @if(!isEmpty(status)){ - and t.status =#status# - @} - @if(!isEmpty(teamId)){ - and t.team_id =#teamId# - @} +* 根据考核ID增加资产信息 + update examination_instances t1 + SET t1.balance = t1.balance + (#amount#) , t1.updated_at=now() + WHERE t1.id = #instanceId# +decrementBalance +=== -finishStep +* 根据考核ID减少资产信息 + + update examination_instances t1 + SET t1.balance = t1.balance - (#amount#) , t1.updated_at=now() + WHERE t1.id = #instanceId# + + +incrementProductAssets === -* 完成当前步骤 +* 根据考核ID增加资产信息 + + update examination_instances t1 + SET t1.product_assets = t1.product_assets + (#amount#) , t1.updated_at=now() + WHERE t1.id = #instanceId# + - update examination_instances - set finish_step = #step# - where id = #id# and finish_step < #step# diff --git a/web/src/main/resources/sql/jlw/userExaminations.md b/web/src/main/resources/sql/jlw/userExaminations.md index f65ff01..c2055c9 100644 --- a/web/src/main/resources/sql/jlw/userExaminations.md +++ b/web/src/main/resources/sql/jlw/userExaminations.md @@ -6,11 +6,8 @@ getPracticeModeValue FROM user_examinations WHERE - team_id = #teamId# - AND examination_id = #examinations.id# - AND flow_id = #examinations.flowId# + examination_id = #examinations.id# AND user_id = #users.id# - AND class_id = #users.classId# scoresListOfStudent @@ -38,7 +35,7 @@ scoresListOfStudent user_examinations us LEFT JOIN flows fs ON us.flow_id = fs.id LEFT JOIN examinations es ON us.examination_id = es.id - LEFT JOIN examination_financials efs ON us.financial_id = efs.id + LEFT JOIN examination_instances efs ON us.instance_id = efs.id WHERE us.user_id = #users.id# AND us.`status` = 2 @@ -350,7 +347,6 @@ getStudentExaminationScoreList join classes t3 on t1.class_id = t3.classes_id where t2.examination_id = #examinationId# - and t2.status > 0 and t1.type = 4 @if(!isEmpty(classId)){ and t1.class_id = #classId# @@ -480,11 +476,9 @@ notParticipatingUsers * 未参加实训考核的学生数据 SELECT - t3.username, t3.id user_Id, t3.class_id, t6.team_id + t3.username, t3.id user_Id, t3.class_id FROM users t3 -LEFT JOIN user_teams t6 on t6.user_id = t3.id -LEFT JOIN teams t7 on t7.id = t6.team_id WHERE t3.class_id IN ( SELECT class_id FROM examination_classes t4 WHERE t4.examination_id = #examinationId# ) AND @@ -496,4 +490,25 @@ WHERE WHERE t5.examination_id = #examinationId# ) - AND (t7.examination_id = #examinationId# or t7.examination_id is null) + + +practiceModeIntegralStatistics +=== + +* 练习模式积分统计 + + SELECT + t2.examination_id, + t2.flow_id, + t2.instance_id, + t2.class_id, + t2.user_id, + t3.MODE + FROM + financings t1 + JOIN user_examinations t2 ON t1.instance_id = t2.instance_id + JOIN examinations t3 ON t1.examination_id = t3.id + WHERE + t1.financing_status = 9 + AND t2.class_id = #classId# + AND t3.type = 0