From 0c6e8595c33919b35e9d3ee08de5bf03e78b073e Mon Sep 17 00:00:00 2001 From: c1769 Date: Mon, 7 Aug 2023 11:19:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ibeetl/jlw/dao/UserExaminationsDao.java | 2 + .../flow/financings/entity/Financings.java | 10 ++++ .../financings/service/FinancingsService.java | 3 ++ .../pickupproducts/entity/PickupProducts.java | 4 ++ .../service/PickupProductsService.java | 10 +++- .../repayments/service/RepaymentsService.java | 12 +++++ .../service/ExaminationFinancialsService.java | 11 +++++ .../service/ExaminationInstancesService.java | 10 ++++ .../jlw/service/ExaminationsService.java | 48 +++++++++++++++++-- .../jlw/service/UserExaminationsService.java | 25 +++++++++- web/src/main/resources/sql/flow/financings.md | 4 +- .../resources/sql/jlw/userExaminations.md | 31 ++++++++++-- 12 files changed, 159 insertions(+), 11 deletions(-) diff --git a/web/src/main/java/com/ibeetl/jlw/dao/UserExaminationsDao.java b/web/src/main/java/com/ibeetl/jlw/dao/UserExaminationsDao.java index 34b42ee..e37734c 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/UserExaminationsDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/UserExaminationsDao.java @@ -46,4 +46,6 @@ public interface UserExaminationsDao extends BaseMapper { public Long getExaminationStudentCount(UserExaminationsQuery userExaminationsQuery); int hasZeroScores(Long examinationId); + + List notParticipatingUsers(Long examinationId); } diff --git a/web/src/main/java/com/ibeetl/jlw/flow/financings/entity/Financings.java b/web/src/main/java/com/ibeetl/jlw/flow/financings/entity/Financings.java index 8fa81de..c4d9f8f 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/financings/entity/Financings.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/financings/entity/Financings.java @@ -286,6 +286,16 @@ public class Financings extends PageParam implements java.io.Seriali */ private Date financingAuditTime; + /** + * 存货开始时间 + */ + private Date inWarehouseStartTime; + + /** + * 最近还款时间 + */ + private Date lastRepaymentTime; + /** * 审核人 */ diff --git a/web/src/main/java/com/ibeetl/jlw/flow/financings/service/FinancingsService.java b/web/src/main/java/com/ibeetl/jlw/flow/financings/service/FinancingsService.java index 8fc4087..3f6a52d 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/financings/service/FinancingsService.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/financings/service/FinancingsService.java @@ -630,6 +630,9 @@ public class FinancingsService extends CoreBaseService { // 还款编号 下一次还款次数 financings.setRepaymentNo(repaymentsService.getNewRepaymentNo()); financings.setRepaymentCount(repaymentsService.getNextRepaymentCount(financings.getFinancingNo())); + + // 获取上一次还款时间 + financings.setLastRepaymentTime(repaymentsService.getLastRepaymentTime(financings.getId())); } // 获取保兑仓融资的保证金信息 diff --git a/web/src/main/java/com/ibeetl/jlw/flow/pickupproducts/entity/PickupProducts.java b/web/src/main/java/com/ibeetl/jlw/flow/pickupproducts/entity/PickupProducts.java index 6fb09a7..2700dd1 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/pickupproducts/entity/PickupProducts.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/pickupproducts/entity/PickupProducts.java @@ -127,6 +127,10 @@ public class PickupProducts extends PageParam { * 已还金额(保证金) */ private BigDecimal repaymentAmount; + /** + * 最近已还金额 + */ + private BigDecimal lastRepaymentAmount; /** * 剩余未还款金额 */ diff --git a/web/src/main/java/com/ibeetl/jlw/flow/pickupproducts/service/PickupProductsService.java b/web/src/main/java/com/ibeetl/jlw/flow/pickupproducts/service/PickupProductsService.java index e68feb1..200965b 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/pickupproducts/service/PickupProductsService.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/pickupproducts/service/PickupProductsService.java @@ -9,6 +9,7 @@ import com.ibeetl.jlw.flow.financings.entity.Financings; import com.ibeetl.jlw.flow.financings.service.FinancingsService; import com.ibeetl.jlw.flow.pickupproducts.dao.PickupProductsDao; import com.ibeetl.jlw.flow.pickupproducts.entity.PickupProducts; +import com.ibeetl.jlw.flow.repayments.entity.Repayments; import com.ibeetl.jlw.flow.repayments.service.RepaymentsService; import com.ibeetl.jlw.service.ExaminationInstancesService; import org.beetl.sql.core.engine.PageQuery; @@ -170,7 +171,14 @@ public class PickupProductsService extends CoreBaseService { queryParam.setPickupStatus(0); info.setProducts(contractsProductsService.getList(queryParam)); info.setPickupApplyNo(getNewPickupApplyNo()); - info.setRepaymentTime(repaymentsService.getLastRepaymentTime(financings.getId())); // 最近还款日期 + + final Repayments lastRepayment = repaymentsService.getLastRepayment(financings.getId()); + if (lastRepayment != null) { + info.setRepaymentTime(lastRepayment.getRepaymentTime()); // 最近还款日期 + info.setLastRepaymentAmount(lastRepayment.getRepaymentAmount()); // 最近还款金额 + } else { + info.setLastRepaymentAmount(BigDecimal.ZERO); // 最近还款金额 + } BigDecimal repaymentAmount = financings.getRepaymentAmount() == null ? BigDecimal.ZERO : financings.getRepaymentAmount(); diff --git a/web/src/main/java/com/ibeetl/jlw/flow/repayments/service/RepaymentsService.java b/web/src/main/java/com/ibeetl/jlw/flow/repayments/service/RepaymentsService.java index b6cec4f..85e248d 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/repayments/service/RepaymentsService.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/repayments/service/RepaymentsService.java @@ -96,6 +96,18 @@ public class RepaymentsService extends CoreBaseService { return repayments == null ? null : repayments.getRepaymentTime(); } + /** + * 获取最近还款 + * + * @param financingId 贷款ID + */ + public Repayments getLastRepayment(Long financingId) { + return repaymentsDao.createLambdaQuery() + .andEq(Repayments::getFinancingId, financingId) + .desc(Repayments::getRepaymentTime) + .single(); + } + /** * 根据贷款编号查询已还款总额 */ diff --git a/web/src/main/java/com/ibeetl/jlw/service/ExaminationFinancialsService.java b/web/src/main/java/com/ibeetl/jlw/service/ExaminationFinancialsService.java index 6e701ad..d39cfa2 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/ExaminationFinancialsService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/ExaminationFinancialsService.java @@ -305,4 +305,15 @@ public class ExaminationFinancialsService extends CoreBaseService { private FlowsService flowsService; @Autowired private ExaminationFinancialsService examinationFinancialsService; + @Autowired + private ExaminationInstancesService examinationInstancesService; @Autowired private UserExaminationsService userExaminationsService; @@ -960,18 +963,20 @@ public class ExaminationsService extends CoreBaseService { } examinationFinancialsService.updateBatchTemplate(updateExFinancList); + int teamOrder = 0; // 已提交成绩的实训,计算个人排名和团队排名 final List updateUserExFinancList = new ArrayList<>(); if (examinations.getMode() >= 1) { final Map> collect = userExaminations.stream() .collect(Collectors.groupingBy(UserExaminations::getTeamId)); for (List value : collect.values()) { - setScoreOrder(value, true); + teamOrder = setScoreOrder(value, true); } } else { - userExaminations.forEach(i -> i.setTeamOrders(1)); + userExaminations.forEach(i -> i.setTeamOrders(null)); } - setScoreOrder(userExaminations, false); + + int classOrder = setScoreOrder(userExaminations, false); for (UserExaminations userExamination : userExaminations) { final UserExaminations updateUE = new UserExaminations(); updateUE.setId(userExamination.getId()); @@ -980,9 +985,43 @@ public class ExaminationsService extends CoreBaseService { updateUserExFinancList.add(updateUE); } userExaminationsService.updateBatchTemplate(updateUserExFinancList); + + // 未参加实训的学生记零分 + final List notParticipatingUsers = userExaminationsService.notParticipatingUsers(examinationId); + if (notParticipatingUsers.isEmpty()) { + return; + } + for (UserExaminations u : notParticipatingUsers) { + final ExaminationInstances nei = ExaminationInstancesService.initInstance(examinationId, examinations.getFlowId()); + nei.setStatus(1); + nei.setTeamId(u.getTeamId() == null ? 0L : u.getTeamId()); + + final UserExaminations nue = UserExaminationsService.initUserExamination(examinationId, examinations.getFlowId()); + nue.setUserId(u.getUserId()); + nue.setTeamId(u.getTeamId() == null ? 0L : u.getTeamId()); + nue.setStatus(2); + nue.setFinishTime(new Date()); + nue.setClassId(u.getClassId()); + nue.setTeamOrders(teamOrder); + nue.setClassOrders(classOrder); + + final ExaminationFinancials nef = ExaminationFinancialsService.initFinancial(); + nef.setRaiseOrders(orderKey); + nef.setType(1); + nef.setUserId(u.getUserId()); + + final KeyHolder nefKey = examinationFinancialsService.insertReturnKey(nef); + nue.setFinancialId(nefKey.getLong()); + + final KeyHolder neiKey = examinationInstancesService.insertReturnKey(nei); + nue.setInstanceId(neiKey.getLong()); + + userExaminationsService.insert(nue); + } + } - private void setScoreOrder(List userExaminations, boolean isTeam) { + private int setScoreOrder(List userExaminations, boolean isTeam) { userExaminations.sort(Comparator.comparing(UserExaminations::getTotalScores)); Collections.reverse(userExaminations); int orderKey = 1; @@ -997,6 +1036,7 @@ public class ExaminationsService extends CoreBaseService { } orderKey++; } + return orderKey; } } diff --git a/web/src/main/java/com/ibeetl/jlw/service/UserExaminationsService.java b/web/src/main/java/com/ibeetl/jlw/service/UserExaminationsService.java index ae2c6f0..3bd69ef 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/UserExaminationsService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/UserExaminationsService.java @@ -354,11 +354,9 @@ public class UserExaminationsService extends CoreBaseService { final ExaminationScore chart = userExaminationsDao.getStudentExaminationScoreChart(userExaminationsQuery); final Long studentCount = getExaminationStudentCount(userExaminationsQuery); if (studentCount > 0) { - final Long num = chart.getNum(); final BigDecimal totalScores = chart.getTotalScores(); final BigDecimal avg = totalScores.divide(BigDecimal.valueOf(studentCount), RoundingMode.HALF_UP) .setScale(2, RoundingMode.HALF_UP); - chart.setBad(studentCount - num); chart.setAvg(avg); } return chart; @@ -511,4 +509,27 @@ public class UserExaminationsService extends CoreBaseService { return userExaminationsDao.getTeacherClassExaminationScoreChart(teacherId); } + /** + * 未参加实训考核的学生数据 + * + * @param examinationId 考核ID + */ + public List notParticipatingUsers(Long examinationId) { + return userExaminationsDao.notParticipatingUsers(examinationId); + } + + public static UserExaminations initUserExamination(Long examinationId, Long flowId) { + final UserExaminations nue = new UserExaminations(); + nue.setCreatedAt(new Date()); + nue.setExaminationId(examinationId); + nue.setFlowId(flowId); + nue.setFlowScores(BigDecimal.ZERO); + nue.setReportScores(BigDecimal.ZERO); + nue.setRaiseScores(BigDecimal.ZERO); + nue.setDurationScores(BigDecimal.ZERO); + nue.setTotalScores(BigDecimal.ZERO); + nue.setOperatorScores(BigDecimal.ZERO); + return nue; + } + } diff --git a/web/src/main/resources/sql/flow/financings.md b/web/src/main/resources/sql/flow/financings.md index 29136e8..a1d03ab 100644 --- a/web/src/main/resources/sql/flow/financings.md +++ b/web/src/main/resources/sql/flow/financings.md @@ -137,12 +137,14 @@ chzyPageQueryByCondition t.*, (t.fk_amount + t.interest_amount - t.repayment_amount) financing_amount, t2.express_id, t2.express_name, t3.send_no, - t4.telephone seller_telephone, t4.corporation seller_corporation + t4.telephone seller_telephone, t4.corporation seller_corporation, + t5.in_warehouse_start_time @} from financings t join protocols t2 on t2.id = t.protocol_id join send_products t3 on t3.protocol_id = t2.id join materials t4 on t4.id = t.seller_id + join warehouse_receipt t5 on t5.protocol_id = t.protocol_id where 1=1 @if(!isEmpty(examinationId)){ and t.examination_id =#examinationId# diff --git a/web/src/main/resources/sql/jlw/userExaminations.md b/web/src/main/resources/sql/jlw/userExaminations.md index 144a825..f65ff01 100644 --- a/web/src/main/resources/sql/jlw/userExaminations.md +++ b/web/src/main/resources/sql/jlw/userExaminations.md @@ -46,7 +46,7 @@ scoresListOfStudent AND es.scores_status = 1 AND es.type =1 ORDER BY - us.id DESC + us.finish_time DESC getMyScoresByValues === @@ -75,7 +75,7 @@ getUserAndExaminations AND es.`status` = 2 AND es.scores_status = 1 AND es.type = 1 - ORDER BY e.id DESC + ORDER BY e.finish_time DESC limit 0,1; queryByCondition @@ -358,7 +358,7 @@ getStudentExaminationScoreList @ if(!isEmpty(username)){ and ( t1.username like #'%'+username+'%'# or t1.student_id like #'%'+username+'%'# ) @} - order by t2.report_scores, t2.id + order by t2.report_scores desc, t2.id ```` @@ -472,3 +472,28 @@ from user_examinations t where t.examination_id = #examinationId# and t.status < 2 and (t.report_scores = 0 or t.report_scores is null) + + +notParticipatingUsers +=== + +* 未参加实训考核的学生数据 + +SELECT + t3.username, t3.id user_Id, t3.class_id, t6.team_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 + t3.id NOT IN ( + SELECT + user_id + FROM + user_examinations t5 + WHERE + t5.examination_id = #examinationId# + ) + AND (t7.examination_id = #examinationId# or t7.examination_id is null)