Pārlūkot izejas kodu

教材学生申领,一旦领取,领取状态不应该被更改为未领取

大数据与最优化研究所 7 mēneši atpakaļ
vecāks
revīzija
1190ec0403

+ 5 - 0
src/main/java/com/xjrsoft/module/textbook/entity/TextbookStudentClaim.java

@@ -101,6 +101,11 @@ public class TextbookStudentClaim implements Serializable {
      */
     @ApiModelProperty("是否领取(1:已领取 0:未领取 2:领取后退还教务处了)")
     private Integer isClaim;
+    /**
+     * 确认领取来源(1:个人申领发放,当确认领取不能被修改未领取,2:班级申领发放,可以修改为未领取)
+     */
+    @ApiModelProperty("确认领取来源(1:个人申领发放,当确认领取不能被修改未领取,2:班级申领发放,可以修改为未领取)")
+    private Integer claimSource;
     /**
      * 备注
      */

+ 1 - 1
src/main/java/com/xjrsoft/module/textbook/entity/WfTextbookClaim.java

@@ -120,7 +120,7 @@ public class WfTextbookClaim implements Serializable {
     /**
      * 状态(1:结束 0:未结束)
      */
-    @ApiModelProperty("状态(1:结束 0:未结束)")
+    @ApiModelProperty("是否有过发放(1:未发放,2:部分发放,3:全部发放)")
     private Integer status;
     /**
      * 流程状态(0:未结束,1:已结束,正常通过,2:已结束,未通过)

+ 57 - 27
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookStudentClaimServiceImpl.java

@@ -230,6 +230,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
                 .selectAs(Textbook::getPrice, HeadTeaLookClassBookCategoryDetailVo::getPrice)
                 .selectAs(Textbook::getTextbookType, HeadTeaLookClassBookCategoryDetailVo::getTextbookType)
                 .select("1 as claim_num")
+                .select("3 as is_claim")
                 .innerJoin(BaseClassCourse.class, BaseClassCourse::getClassId, BaseClassAdminCourse::getId)
                 .innerJoin(Textbook.class, Textbook::getId, BaseClassCourse::getTextbookId)
                 .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
@@ -853,7 +854,9 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
                     price = textBookPriceMap.get(textbookId);
                 }
                 oldTextbookStudentClaim = byUserIdAndTextbookId.get("" + userId + textbookId);
-                if (ObjectUtils.isNotEmpty(oldTextbookStudentClaim)) {
+                if (ObjectUtils.isNotEmpty(oldTextbookStudentClaim)
+                        && (ObjectUtils.isEmpty(oldTextbookStudentClaim.getClaimSource()) || oldTextbookStudentClaim.getClaimSource() != 1)
+                ) {
                     updateTextbookStudentClaim = new TextbookStudentClaim();
                     updateTextbookStudentClaim.setId(oldTextbookStudentClaim.getId());
                     updateTextbookStudentClaim.setIsClaim(dto.getIsClaim());
@@ -865,6 +868,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
                     if(dto.getIsClaim() == 1){
                         updateTextbookStudentClaim.setPrice(price);
                     }
+                    updateTextbookStudentClaim.setClaimSource(2);
                     updateList.add(updateTextbookStudentClaim);
                 } else {
                     insertTextbookStudentClaim = new TextbookStudentClaim();
@@ -881,6 +885,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
                     if(dto.getIsClaim() == 1){
                         insertTextbookStudentClaim.setPrice(price);
                     }
+                    insertTextbookStudentClaim.setClaimSource(2);
                     insertList.add(insertTextbookStudentClaim);
                 }
             }
@@ -937,6 +942,9 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
         Map<String, TextbookStudentClaim> byUserIdAndTextbookId = textbookStudentClaimList.stream()
                 .collect(Collectors.toMap(t -> "" + t.getBaseSemesterId() + t.getClassId() + t.getStudentUserId() + t.getTextbookId(), t -> t, (t1, t2) -> t1));
 
+        Map<Long, TextbookStudentClaim> byClaimSource = textbookStudentClaimList.stream()
+                .collect(Collectors.toMap(TextbookStudentClaim::getId , t -> t, (t1, t2) -> t1));
+
         // 根据学期,班级获取申领教材信息
         MPJLambdaWrapper<WfTextbookClaim> wfTextbookClaimLambdaQueryWrapper = new MPJLambdaWrapper<>();
         wfTextbookClaimLambdaQueryWrapper
@@ -966,22 +974,30 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
             if(MapUtils.isNotEmpty(textBookPriceMap) && ObjectUtils.isNotEmpty(textBookPriceMap.get(dto.getTextbookId()))){
                 price = textBookPriceMap.get(dto.getTextbookId());
             }
-            if (ObjectUtils.isNotEmpty(dto.getTextbookStudentClaimId()) && dto.getTextbookStudentClaimId() != 0) {
-                updateTextbookStudentClaim = new TextbookStudentClaim();
-                updateTextbookStudentClaim.setId(dto.getTextbookStudentClaimId());
-                updateTextbookStudentClaim.setIsClaim(dto.getIsClaim());
-                updateTextbookStudentClaim.setModifyUserId(loginUserId);
-                updateTextbookStudentClaim.setModifyDate(nowDate);
-                if(dto.getIsClaim() == 0){
-                    updateTextbookStudentClaim.setPrice(BigDecimal.ZERO);
-                }
-                if(dto.getIsClaim() == 1){
-                    updateTextbookStudentClaim.setPrice(price);
+            if (ObjectUtils.isNotEmpty(dto.getTextbookStudentClaimId())
+                    && dto.getTextbookStudentClaimId() != 0) {
+                oldTextbookStudentClaim = byClaimSource.get(dto.getTextbookStudentClaimId());
+                if(ObjectUtils.isNotEmpty(oldTextbookStudentClaim)
+                        && (ObjectUtils.isEmpty(oldTextbookStudentClaim.getClaimSource()) || oldTextbookStudentClaim.getClaimSource() != 1)) {
+                    updateTextbookStudentClaim = new TextbookStudentClaim();
+                    updateTextbookStudentClaim.setId(dto.getTextbookStudentClaimId());
+                    updateTextbookStudentClaim.setIsClaim(dto.getIsClaim());
+                    updateTextbookStudentClaim.setModifyUserId(loginUserId);
+                    updateTextbookStudentClaim.setModifyDate(nowDate);
+                    if (dto.getIsClaim() == 0) {
+                        updateTextbookStudentClaim.setPrice(BigDecimal.ZERO);
+                    }
+                    if (dto.getIsClaim() == 1) {
+                        updateTextbookStudentClaim.setPrice(price);
+                    }
+                    updateTextbookStudentClaim.setClaimSource(2);
+                    updateList.add(updateTextbookStudentClaim);
                 }
-                updateList.add(updateTextbookStudentClaim);
             } else {
                 oldTextbookStudentClaim = byUserIdAndTextbookId.get("" + dto.getBaseSemesterId() + dto.getClassId() + dto.getStudentUserId() + dto.getTextbookId());
-                if (ObjectUtils.isNotEmpty(oldTextbookStudentClaim)) {
+                if (ObjectUtils.isNotEmpty(oldTextbookStudentClaim)
+                        && (ObjectUtils.isEmpty(oldTextbookStudentClaim.getClaimSource()) || oldTextbookStudentClaim.getClaimSource() != 1)
+                ) {
                     updateTextbookStudentClaim = new TextbookStudentClaim();
                     updateTextbookStudentClaim.setId(oldTextbookStudentClaim.getId());
                     updateTextbookStudentClaim.setIsClaim(dto.getIsClaim());
@@ -993,6 +1009,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
                     if(dto.getIsClaim() == 1){
                         updateTextbookStudentClaim.setPrice(price);
                     }
+                    updateTextbookStudentClaim.setClaimSource(2);
                     updateList.add(updateTextbookStudentClaim);
                 } else {
                     insertTextbookStudentClaim = new TextbookStudentClaim();
@@ -1009,6 +1026,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
                     if(dto.getIsClaim() == 1){
                         insertTextbookStudentClaim.setPrice(price);
                     }
+                    insertTextbookStudentClaim.setClaimSource(2);
                     insertList.add(insertTextbookStudentClaim);
                 }
             }
@@ -1066,6 +1084,9 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
         Map<String, TextbookStudentClaim> byUserIdAndTextbookId = textbookStudentClaimList.stream()
                 .collect(Collectors.toMap(t -> "" + t.getStudentUserId() + t.getTextbookId(), t -> t, (t1, t2) -> t1));
 
+        Map<Long, TextbookStudentClaim> byClaimSource = textbookStudentClaimList.stream()
+                .collect(Collectors.toMap(TextbookStudentClaim::getId , t -> t, (t1, t2) -> t1));
+
         // 根据学期,班级获取申领教材信息
         MPJLambdaWrapper<WfTextbookClaim> wfTextbookClaimLambdaQueryWrapper = new MPJLambdaWrapper<>();
         wfTextbookClaimLambdaQueryWrapper
@@ -1094,22 +1115,29 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
             if(MapUtils.isNotEmpty(textBookPriceMap) && ObjectUtils.isNotEmpty(textBookPriceMap.get(studentConfirmDetailDto.getTextbookId()))){
                 price = textBookPriceMap.get(studentConfirmDetailDto.getTextbookId());
             }
-            if (ObjectUtils.isNotEmpty(studentConfirmDetailDto.getTextbookStudentClaimId()) && studentConfirmDetailDto.getTextbookStudentClaimId() != 0) {
-                updateTextbookStudentClaim = new TextbookStudentClaim();
-                updateTextbookStudentClaim.setId(studentConfirmDetailDto.getTextbookStudentClaimId());
-                updateTextbookStudentClaim.setIsClaim(dto.getIsClaim());
-                updateTextbookStudentClaim.setModifyUserId(loginUserId);
-                updateTextbookStudentClaim.setModifyDate(nowDate);
-                if(dto.getIsClaim() == 0){
-                    updateTextbookStudentClaim.setPrice(BigDecimal.ZERO);
-                }
-                if(dto.getIsClaim() == 1){
-                    updateTextbookStudentClaim.setPrice(price);
+            if (ObjectUtils.isNotEmpty(studentConfirmDetailDto.getTextbookStudentClaimId())
+                    && studentConfirmDetailDto.getTextbookStudentClaimId() != 0
+            ) {
+                oldTextbookStudentClaim = byClaimSource.get(studentConfirmDetailDto.getTextbookStudentClaimId());
+                if(ObjectUtils.isNotEmpty(oldTextbookStudentClaim)
+                         && (ObjectUtils.isEmpty(oldTextbookStudentClaim.getClaimSource()) || oldTextbookStudentClaim.getClaimSource() != 1)){
+                    updateTextbookStudentClaim = new TextbookStudentClaim();
+                    updateTextbookStudentClaim.setId(studentConfirmDetailDto.getTextbookStudentClaimId());
+                    updateTextbookStudentClaim.setIsClaim(dto.getIsClaim());
+                    updateTextbookStudentClaim.setModifyUserId(loginUserId);
+                    updateTextbookStudentClaim.setModifyDate(nowDate);
+                    if(dto.getIsClaim() == 0){
+                        updateTextbookStudentClaim.setPrice(BigDecimal.ZERO);
+                    }
+                    if(dto.getIsClaim() == 1){
+                        updateTextbookStudentClaim.setPrice(price);
+                    }
+                    updateTextbookStudentClaim.setClaimSource(2);
+                    updateList.add(updateTextbookStudentClaim);
                 }
-                updateList.add(updateTextbookStudentClaim);
             } else {
                 oldTextbookStudentClaim = byUserIdAndTextbookId.get("" + baseStudentSchoolRoll.getUserId() + studentConfirmDetailDto.getTextbookId());
-                if (ObjectUtils.isNotEmpty(oldTextbookStudentClaim)) {
+                if (ObjectUtils.isNotEmpty(oldTextbookStudentClaim)  && (ObjectUtils.isEmpty(oldTextbookStudentClaim.getClaimSource()) || oldTextbookStudentClaim.getClaimSource() != 1)) {
                     updateTextbookStudentClaim = new TextbookStudentClaim();
                     updateTextbookStudentClaim.setId(oldTextbookStudentClaim.getId());
                     updateTextbookStudentClaim.setIsClaim(dto.getIsClaim());
@@ -1121,6 +1149,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
                     if(dto.getIsClaim() == 1){
                         updateTextbookStudentClaim.setPrice(price);
                     }
+                    updateTextbookStudentClaim.setClaimSource(2);
                     updateList.add(updateTextbookStudentClaim);
                 } else {
                     insertTextbookStudentClaim = new TextbookStudentClaim();
@@ -1137,6 +1166,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
                     if(dto.getIsClaim() == 1){
                         insertTextbookStudentClaim.setPrice(price);
                     }
+                    insertTextbookStudentClaim.setClaimSource(2);
                     insertList.add(insertTextbookStudentClaim);
                 }
             }

+ 4 - 1
src/main/java/com/xjrsoft/module/textbook/service/impl/WfTextbookClaimServiceImpl.java

@@ -102,6 +102,7 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
                 .eq(WfTextbookClaim::getBaseSemesterId, dto.getBaseSemesterId())
                 .eq(StringUtils.isNotEmpty(dto.getClaimType()), WfTextbookClaim::getClaimType, dto.getClaimType())
                 .eq(ObjectUtils.isNotEmpty(dto.getDistributeStatus()), WfTextbookClaim::getStatus, dto.getDistributeStatus())
+                .ne(ObjectUtils.isEmpty(dto.getDistributeStatus()), WfTextbookClaim::getStatus, 1)
                 .and(StringUtils.isNotEmpty(dto.getName()),
                         wrapper -> wrapper
                                 .like(XjrUser::getName, dto.getName())
@@ -490,13 +491,14 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
                 // 如果申领项是个人申领,发放的时候应该直接帮助学生确认领取
                 if(ClaimTypeEnum.ClaimStudent.getCode().equals(wfTextbookClaim.getClaimType())){
                     oldTextbookStudentClaim = byUserIdAndTextbookId.get("" + wfTextbookClaim.getApplicantUserId() + wfTextbookClaimItem.getTextbookId());
-                    if (ObjectUtils.isNotEmpty(oldTextbookStudentClaim)) {
+                    if (ObjectUtils.isNotEmpty(oldTextbookStudentClaim) && (ObjectUtils.isEmpty(oldTextbookStudentClaim.getClaimSource()) || oldTextbookStudentClaim.getClaimSource() != 1)) {
                         updateTextbookStudentClaim = new TextbookStudentClaim();
                         updateTextbookStudentClaim.setId(oldTextbookStudentClaim.getId());
                         updateTextbookStudentClaim.setIsClaim(1);
                         updateTextbookStudentClaim.setModifyDate(nowDate);
                         updateTextbookStudentClaim.setModifyUserId(loginUserId);
                         updateTextbookStudentClaim.setPrice(textbookWarehouseRecord.getSubtotal());
+                        updateTextbookStudentClaim.setClaimSource(2);
                         updateList.add(updateTextbookStudentClaim);
                     } else {
                         insertTextbookStudentClaim = new TextbookStudentClaim();
@@ -508,6 +510,7 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
                         insertTextbookStudentClaim.setCreateDate(nowDate);
                         insertTextbookStudentClaim.setCreateUserId(loginUserId);
                         insertTextbookStudentClaim.setPrice(textbookWarehouseRecord.getSubtotal());
+                        insertTextbookStudentClaim.setClaimSource(2);
                         insertList.add(insertTextbookStudentClaim);
                     }
                 }

+ 1 - 1
src/main/java/com/xjrsoft/module/textbook/vo/HeadTeaLookClassBookCategoryDetailVo.java

@@ -33,7 +33,7 @@ public class HeadTeaLookClassBookCategoryDetailVo {
     @ApiModelProperty("申领数量")
     private Integer claimNum;
 
-    @ApiModelProperty("是否已经领取")
+    @ApiModelProperty("是否已经领取,0:未领取;1:已领取;2:领取后退还教务处了;3:未申领")
     private Integer isClaim;
 
     @ApiModelProperty("申领类型")

+ 3 - 0
src/main/resources/sqlScript/20250414_sql.sql

@@ -36,3 +36,6 @@ create table `professional_title`
 
 alter table textbook_student_claim
     add price decimal(15, 6) default 0 null comment '教材确认领取的价格' after textbook_id;
+
+alter table textbook_student_claim
+    add claim_source int default 0 comment '确认领取来源(1:个人申领发放,当确认领取不能被修改未领取,2:班级申领发放,可以修改为未领取)' after is_claim;