资产重新计算

master
c1769
parent 0c6e8595c3
commit 761cddcb79

@ -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"})

@ -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<ExaminationFinancials> {
public PageQuery<ExaminationFinancials> queryByCondition(PageQuery query);
public void deleteExaminationFinancialsByIds(String ids);
public List<ExaminationFinancials> 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);
}

@ -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<ExaminationInstances> {
PageQuery<ExaminationInstances> queryByCondition(PageQuery query);
void deleteExaminationInstancesByIds(String ids);
List<ExaminationInstances> 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);
}

@ -48,4 +48,6 @@ public interface UserExaminationsDao extends BaseMapper<UserExaminations> {
int hasZeroScores(Long examinationId);
List<UserExaminations> notParticipatingUsers(Long examinationId);
List<UserExaminations> practiceModeIntegralStatistics(Long classId);
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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);
}

@ -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<BankAcceptanceBil
@Autowired
private ExaminationInstancesService examinationInstancesService;
@Autowired
private ExaminationFinancialsService examinationFinancialsService;
@Autowired
private FinancingsService financingsService;
@ -67,7 +63,7 @@ public class BankAcceptanceBillService extends CoreBaseService<BankAcceptanceBil
this.insert(dto);
if (dto.getInvoiceFee() != null && dto.getInvoiceFee().compareTo(BigDecimal.ZERO) != 0) {
examinationFinancialsService.decrementBalance(dto.getExaminationId(), dto.getInstanceId(), "1", dto.getInvoiceFee()); // 买方资金减少
examinationInstancesService.decrementBalance(dto.getExaminationId(), dto.getInstanceId(), "1", dto.getInvoiceFee()); // 买方资金减少
}
// 保兑仓 买方企业 把购销合同金额和融资申请金额的差额,发给卖方企业
@ -75,8 +71,8 @@ public class BankAcceptanceBillService extends CoreBaseService<BankAcceptanceBil
Assert.notNull(financings, "为查询到承兑汇票相关融资申请 " + dto.getFinancingId());
final BigDecimal sub2 = financings.getContractAmount().subtract(financings.getApplyAmount());
examinationFinancialsService.decrementBalance(financings.getExaminationId(), financings.getInstanceId(), "1", sub2); // 买方资金减少
examinationFinancialsService.incrementBalance(financings.getExaminationId(), financings.getInstanceId(), "2", sub2); // 卖方资金增加
examinationInstancesService.decrementBalance(financings.getExaminationId(), financings.getInstanceId(), "1", sub2); // 买方资金减少
examinationInstancesService.incrementBalance(financings.getExaminationId(), financings.getInstanceId(), "2", sub2); // 卖方资金增加
if (dto.getStep() != null) {
examinationInstancesService.finishStep(dto.getInstanceId(), dto.getStep());

@ -1,6 +1,7 @@
package com.ibeetl.jlw.flow.contractsproducts.controller;
import cn.jlw.Interceptor.AliasProcessor;
import com.ibeetl.jlw.task.ProductSellPriceTask;
import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.jlw.flow.contractsproducts.entity.ContractsProducts;
import com.ibeetl.jlw.flow.contractsproducts.service.ContractsProductsService;
@ -19,6 +20,9 @@ public class ContractsProductsController {
@Autowired
private ContractsProductsService contractsProductsService;
@Autowired
private ProductSellPriceTask productSellPriceTask;
/**
*
*/
@ -28,6 +32,15 @@ public class ContractsProductsController {
return JsonResult.success(contractsProductsService.getList(queryParam));
}
/**
*
*/
@GetMapping("/randomSellPrice")
public JsonResult<List<ContractsProducts>> randomSellPrice() {
productSellPriceTask.updateSellPrice();
return JsonResult.success();
}
/**
*
*/

@ -19,9 +19,10 @@ public interface ContractsProductsDao extends BaseMapper<ContractsProducts> {
List<ContractsProducts> getList(ContractsProducts queryParam);
BigDecimal getHadPickupAmount(Long contractId, Long protocolId);
BigDecimal getCurrentAmount(Long contractId, Long protocolId);
BigDecimal getPickupAmountByIds(List<Long> ids);
void updatePickupStatus(Long pickupProductId, Integer pickupStatus);

@ -38,6 +38,17 @@ public class ContractsProductsService extends CoreBaseService<ContractsProducts>
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<Long> ids) {
final BigDecimal amount = contractsProductsDao.getPickupAmountByIds(ids);

@ -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<Financings> {
@Autowired
private RecommendSupplierService recommendSupplierService;
@Autowired
private ExaminationFinancialsService examinationFinancialsService;
@Autowired
private ExaminationInstancesService examinationInstancesService;
@ -349,15 +345,15 @@ public class FinancingsService extends CoreBaseService<Financings> {
}
// 修改卖方资金
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<Financings> {
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<Financings> {
dto.setUpdatedAt(new Date());
// 买方资金减少
examinationFinancialsService.decrementBalance(single.getExaminationId(),
examinationInstancesService.decrementBalance(single.getExaminationId(),
single.getInstanceId(), "1", dto.getBailAmount());
// 推进流程进度

@ -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<OperateScores> {
int totalDeductionScore(Long userExaminationId);
List<OperateScores> getOperateScoreByType(Long userExaminationId, List<String> types);
}

@ -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<OperateScores> {
private OperateScoresDao operateScoresDao;
public static final Map<String, Integer> SCORE_MAP = new HashMap<>();
public static final Map<Long, FlowDeductionPoint> FLOW_SCORE_POINT = new HashMap<>();
public int totalDeductionScore(Long userExaminationId) {
return operateScoresDao.totalDeductionScore(userExaminationId);
}
List<OperateScores> getOperateScoreByType(Long userExaminationId, List<String> types) {
return operateScoresDao.getOperateScoreByType(userExaminationId, types);
}
public List<OperateScores> 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<OperateScores> operateScoreByType = getOperateScoreByType(userExaminationId, flowDeductionPoint.getDeductionItems());
// 剩余未完成流程节点扣操作分 operateScore
return flowDeductionPoint.getDeductionScoreByFinishStep(finishedStep, operateScoreByType);
}
@Transactional
public Map<String, OperateScores> verifyAnswer(OperateScores scores) {
final List<String> incorrectAnswers = scores.getIncorrectAnswers();
@ -72,21 +93,22 @@ public class OperateScoresService extends CoreBaseService<OperateScores> {
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<OperateScores> {
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<OperateScores> {
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<OperateScores> {
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<OperateScores> {
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<OperateScores> {
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<OperateScores> {
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<OperateScores> {
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<OperateScores> {
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<OperateScores> {
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<OperateScores> {
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<OperateScores> {
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<OperateScores> {
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<OperateScores> {
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<OperateScores> {
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<OperateScores> {
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);
}
}

@ -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<Repayments> {
@Autowired
private FinancingsService financingsService;
@Autowired
private ExaminationFinancialsService examinationFinancialsService;
@Autowired
private ExaminationInstancesService examinationInstancesService;
@ -150,17 +146,17 @@ public class RepaymentsService extends CoreBaseService<Repayments> {
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<Repayments> {
// 更新卖方资金
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);

@ -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<SendProducts> {
@Autowired
private SendProductsDao sendProductsDao;
@Autowired
private ExaminationFinancialsService examinationFinancialsService;
@Autowired
private ContractsPurchaseSalesService contractsPurchaseSalesService;
@ -47,9 +40,6 @@ public class SendProductsService extends CoreBaseService<SendProducts> {
@Autowired
private ExaminationInstancesService examinationInstancesService;
@Autowired
private FinancingsService financingsService;
public PageQuery<SendProducts> pageQueryByCondition(SendProducts queryParam) {
return sendProductsDao.pageQueryByCondition(queryParam.getPageQuery(), queryParam);
}
@ -128,11 +118,11 @@ public class SendProductsService extends CoreBaseService<SendProducts> {
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<SendProducts> {
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<SendProducts> {
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); // 修改收货状态 收货地址 收货时间

@ -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<WarehouseShipment>
@Autowired
private ExaminationInstancesService examinationInstancesService;
@Autowired
private ExaminationFinancialsService examinationFinancialsService;
@Autowired
private ContractsProductsService contractsProductsService;
@ -139,7 +135,7 @@ public class WarehouseShipmentService extends CoreBaseService<WarehouseShipment>
// 买方企业收货之后,存货价值增加,存货以当前售价计算价值
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<WarehouseShipment>
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);
}
}

@ -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<ExaminationFinancials> {
@Autowired
private ExaminationFinancialsDao examinationFinancialsDao;
@Autowired
private UsersService usersService;
/**
*
*
* @param users
* @param type
* @return java.util.Map<java.lang.String, java.lang.Object>
* @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<ExaminationFinancials> 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<ExaminationFinancials> getValues(Object paras) {
return sqlManager.select("jlw.examinationFinancials.getExaminationFinancialsValues", ExaminationFinancials.class, paras);
}
public List<ExaminationFinancials> 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<ExaminationFinancials> 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<String, Object>() {{
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;
}
}

@ -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<ExaminationInstances> {
private static final BigDecimal w100 = BigDecimal.valueOf(1000000); // 初始资金100万
@Autowired
private ExaminationInstancesDao examinationInstancesDao;
public PageQuery<ExaminationInstances> 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<ExaminationInstances> 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<ExaminationInstances> 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<ExaminationInstances> 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<ExaminationInstances> select = this.examinationInstancesDao.createLambdaQuery()
.andEq(ExaminationInstances::getExaminationId, examinationId).select();
if (select.isEmpty()) {
return;
}
final List<ExaminationInstances> 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<ExaminationInstances> 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);
}
}
}

@ -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<Examinations> {
@Autowired
private FlowsService flowsService;
@Autowired
private ExaminationFinancialsService examinationFinancialsService;
@Autowired
private ExaminationInstancesService examinationInstancesService;
@Autowired
@ -893,9 +891,6 @@ public class ExaminationsService extends CoreBaseService<Examinations> {
/**
*
*
* @param user
* @return
*/
public JsonResult<Long> scoreExaminationsNumber(Users user) {
if (Objects.isNull(user) || Objects.equals(user.getTeacherId(), 0L)) {
@ -947,87 +942,90 @@ public class ExaminationsService extends CoreBaseService<Examinations> {
userExaminationsService.sumTotalScores(userExamination, examinations, flows);
}
// 计算学生考核分数
// 已结束的实训,计算资产增长率排名 updateRaiseOrders ==> php
userExaminations.sort(Comparator.comparing(UserExaminations::getRaiseRate));
Collections.reverse(userExaminations);
int orderKey = 1;
final List<ExaminationFinancials> 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<UserExaminations> updateUserExFinancList = new ArrayList<>();
final List<UserExaminations> updateUserExList = new ArrayList<>();
if (examinations.getMode() >= 1) {
final Map<Long, List<UserExaminations>> collect = userExaminations.stream()
final List<UserExaminations> orderList = userExaminations.stream()
.filter(i -> i.getTotalScores().compareTo(BigDecimal.ZERO) > 0)
.sorted(Comparator.comparing(UserExaminations::getRaiseRate).reversed())
.collect(Collectors.toList());
final Map<Long, List<UserExaminations>> collect = orderList.stream()
.collect(Collectors.groupingBy(UserExaminations::getTeamId));
for (List<UserExaminations> 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<UserExaminations> 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);
/**
* IDID
*/
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> userExaminations, boolean isTeam) {
private void setScoreOrder(List<UserExaminations> 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<Examinations> {
}
orderKey++;
}
return orderKey;
}
}

@ -30,6 +30,10 @@ public class ProductsService extends CoreBaseService<Products> {
@Autowired
private ProductsDao productsDao;
public List<Products> queryAll() {
return productsDao.createQuery().select();
}
public PageQuery<Products> queryByCondition(PageQuery query) {
PageQuery ret = productsDao.queryByCondition(query);
queryListAfter(ret.getList());

@ -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<UserExaminations> {
@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<UserExaminations> {
/**
*
*
* @param users
* @return java.util.Map<java.lang.String, java.lang.Object>
* @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<UserExaminations> {
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<UserExaminations> {
}
public PageQuery<UserExaminations> 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<UserExaminations> {
}
}
public List<UserExaminations> getValues(Object paras) {
return sqlManager.select("jlw.userExaminations.getUserExaminationsValues", UserExaminations.class, paras);
}
public List<UserExaminations> getValuesByQuery(UserExaminationsQuery userExaminationsQuery) {
return userExaminationsDao.getValuesByQuery(userExaminationsQuery);
}
/**
*
*
@ -116,7 +95,7 @@ public class UserExaminationsService extends CoreBaseService<UserExaminations> {
* @return java.util.Map<java.lang.String, java.lang.Object>
* @Date 2022-07-21 18:12
*/
public PageQuery scoresListOfStudent(Users users, PageQuery page) {
public PageQuery<UserExaminations> scoresListOfStudent(Users users, PageQuery page) {
PageQuery<UserExaminations> pagequery = userExaminationsDao.scoresListOfStudent(page, users);
for (int i = 0; i < pagequery.getList().size(); i++) {
@ -135,6 +114,9 @@ public class UserExaminationsService extends CoreBaseService<UserExaminations> {
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<UserExaminations> {
/**
* /
*
* @param users
* @param flowId
* @param examinationId
* @param isTeam
* @param teamId
* @return java.util.Map<java.lang.String, java.lang.Object>
* @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<UserExaminations> {
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<UserExaminations> getByExaminationIdAndUserId(UserExaminations userExaminations) {
return userExaminationsDao.getByExaminationIdAndUserId(userExaminations);
}
/**
*
*
* @param userExaminationsQuery
* @return
*/
public PageQuery<UserExaminations> getStudentExaminationScoreList(UserExaminationsQuery userExaminationsQuery) {
return userExaminationsDao.getStudentExaminationScoreList(userExaminationsQuery.getPageQuery(), userExaminationsQuery);
final Long examinationId = userExaminationsQuery.getExaminationId();
final List<UserExaminations> notParticipatingUsers = this.notParticipatingUsers(examinationId);
if (!notParticipatingUsers.isEmpty()) {
// 未提交实训/未参与实训的学生记0分
final Examinations examinations = examinationsService.queryById(examinationId);
if (examinations == null) {
throw new GlobalException("未查询到实训考核!");
}
List<UserExaminations> 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<UserExaminations> ses = userExaminationsDao.getStudentExaminationScoreList(userExaminationsQuery.getPageQuery(), userExaminationsQuery);
List<UserExaminations> 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<UserExaminations> {
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<UserExaminations> {
}
}
}
// 实训模式,流程准确性评分
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<UserExaminations> {
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<UserExaminations> {
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<UserExaminations> {
return userExaminationsDao.notParticipatingUsers(examinationId);
}
public static UserExaminations initUserExamination(Long examinationId, Long flowId) {
/**
* 20
* 50100
* 200
*
* @param userId ID
* @param classId ID
* @return classOrder integral
*/
public Map<String, Integer> practiceModeIntegral(Long userId, Long classId) {
Map<String, Integer> result = new HashMap<>();
result.put("integral", 0);
final List<UserExaminations> ues = userExaminationsDao.practiceModeIntegralStatistics(classId);
final Map<Long, List<UserExaminations>> collect = ues.stream().collect(Collectors.groupingBy(UserExaminations::getUserId));
if (!collect.containsKey(userId)) {
// 没有成绩
result.put("classOrder", collect.keySet().size() + 1);
return result;
}
List<UserExaminations> 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> userExaminations) {
if (userExaminations == null || userExaminations.isEmpty()) {
return 0;
}
final Map<Integer, List<UserExaminations>> collect =
userExaminations.stream().filter(i -> i.getMode() != null)
.collect(Collectors.groupingBy(UserExaminations::getMode));
int totalIntegral = 0;
for (Integer mode : collect.keySet()) {
final List<UserExaminations> modeUEs = collect.get(mode);
Set<Long> 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<UserExaminations> {
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;
}

@ -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;

@ -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<ExaminationFinancials> 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<PageQuery> 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<String> 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<ExaminationFinancials> queryInfo(Integer id) {
ExaminationFinancials examinationFinancials = examinationFinancialsService.queryById(id);
return JsonResult.success(examinationFinancials);
}
@GetMapping(MODEL + "/getValues.json")
@ResponseBody
public JsonResult<List<ExaminationFinancials>> getValues(ExaminationFinancialsQuery param) {
List<ExaminationFinancials> 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();
}
}

@ -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<ExaminationInstances> 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<Void> 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<PageQuery> 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<String> 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 JsonResult<ExaminationInstances>queryInfo(Integer id) {
ExaminationInstances examinationInstances = examinationInstancesService.queryById( id);
return JsonResult.success(examinationInstances);
}
@GetMapping(MODEL + "/getValues.json")
@ResponseBody
public JsonResult<List<ExaminationInstances>>getValues(ExaminationInstancesQuery param) {
List<ExaminationInstances>list = 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();
}
}

@ -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<Examinations> 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<PageQuery<UserExaminations>> 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<UserExaminations> 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<Map<String, Integer>> practiceModeIntegral(@FinancialUser Users user) {
return JsonResult.success(userExaminationsService.practiceModeIntegral(user.getId(), user.getClassId()));
}
}

@ -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;
}
}

@ -78,7 +78,7 @@ quartz.job-store-type=jdbc
ResponseControllerAdvice.nThreads=100
logistics.key = ykIOnbVg6060
logistics.key = ykIOnbVg606066
logistics.customer = 90F883EF5EB30F659B5B44173E01C8A6

@ -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
===

@ -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

@ -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#
@}

@ -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#

@ -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

Loading…
Cancel
Save