Parcourir la source

Merge branch 'pre'

dzx il y a 10 mois
Parent
commit
0ef9718c9f

+ 0 - 1
src/main/java/com/xjrsoft/module/textbook/controller/WfTextbookClaimController.java

@@ -50,7 +50,6 @@ import static org.camunda.bpm.engine.impl.cmmn.execution.CaseExecutionState.COMP
 @AllArgsConstructor
 public class WfTextbookClaimController {
 
-
     private final IWfTextbookClaimService wfTextbookClaimService;
 
     private final CommonPropertiesConfig commonPropertiesConfig;

+ 35 - 6
src/main/java/com/xjrsoft/module/textbook/dto/TextbookWarehouseRecordPageDto.java

@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.time.LocalDateTime;
+
 
 /**
 * @title: 教材入库分页查询入参
@@ -19,12 +21,39 @@ public class TextbookWarehouseRecordPageDto extends PageInput {
     @ApiModelProperty("学期id")
     public Long baseSemesterId;
 
-    @ApiModelProperty("学科组id")
-    public Long subjectGroupId;
-
-    @ApiModelProperty("课程id")
-    public Long courseSubjectId;
+    @ApiModelProperty("入库方式")
+    public String warehouseMode;
 
-    @ApiModelProperty("书名")
+    @ApiModelProperty("教材名称")
     public String bookName;
+
+    @ApiModelProperty("教材类型")
+    public String textbookType;
+
+    @ApiModelProperty("入库单号")
+    public String orderNumber;
+
+    @ApiModelProperty("issn")
+    public String issn;
+
+    @ApiModelProperty("所属学科组")
+    public String groupName;
+
+    @ApiModelProperty("使用学期")
+    public Integer useType;
+
+    @ApiModelProperty("入库人员")
+    public String warehouseUser;
+
+    @ApiModelProperty("入库开始时间")
+    public LocalDateTime startCreateDate;
+
+    @ApiModelProperty("入库结束时间")
+    public LocalDateTime endCreateDate;
+
+    @ApiModelProperty("退还书店")
+    public Integer returnBookstore;
+
+    @ApiModelProperty("退还教务处")
+    public Integer returnState;
 }

+ 11 - 3
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookWarehouseRecordServiceImpl.java

@@ -93,11 +93,19 @@ public class TextbookWarehouseRecordServiceImpl extends MPJBaseServiceImpl<Textb
                 .leftJoin(XjrUser.class, XjrUser::getId, TextbookWarehouseRecord::getCreateUserId,
                         wrapper -> wrapper
                                 .selectAs(XjrUser::getName, TextbookWarehouseRecordPageVo::getWarehouseUser)
+                                .like(StringUtils.isNotEmpty(dto.getWarehouseUser()), XjrUser::getName, dto.getWarehouseUser())
                 )
-                .eq(ObjectUtils.isNotEmpty(dto.getBaseSemesterId()), TextbookSubscription::getBaseSemesterId, dto.getBaseSemesterId())
-                .eq(ObjectUtils.isNotEmpty(dto.getSubjectGroupId()), Textbook::getSubjectGroupId, dto.getSubjectGroupId())
-                .eq(ObjectUtils.isNotEmpty(dto.getCourseSubjectId()), Textbook::getCourseSubjectId, dto.getCourseSubjectId())
+                .eq(ObjectUtils.isNotEmpty(dto.getBaseSemesterId()), TextbookWarehouseRecord::getBaseSemesterId, dto.getBaseSemesterId())
+                .eq(StringUtils.isNotEmpty(dto.getWarehouseMode()), TextbookWarehouseRecord::getWarehouseMode, dto.getWarehouseMode())
                 .like(StringUtils.isNotEmpty(dto.getBookName()), Textbook::getBookName, dto.getBookName())
+                .eq(StringUtils.isNotEmpty(dto.getTextbookType()), Textbook::getTextbookType, dto.getTextbookType())
+                .eq(StringUtils.isNotEmpty(dto.getOrderNumber()), TextbookWarehouseRecord::getOrderNumber, dto.getOrderNumber())
+                .eq(StringUtils.isNotEmpty(dto.getIssn()), Textbook::getIssn, dto.getIssn())
+                .like(StringUtils.isNotEmpty(dto.getGroupName()), SubjectGroup::getGroupName, dto.getGroupName())
+                .eq(ObjectUtils.isNotEmpty(dto.getUseType()), Textbook::getUseType, dto.getUseType())
+                .between(ObjectUtils.isNotEmpty(dto.getStartCreateDate()) && ObjectUtils.isNotEmpty(dto.getEndCreateDate()), TextbookWarehouseRecord::getCreateDate, dto.getStartCreateDate(), dto.getEndCreateDate())
+                .gt(ObjectUtils.isNotEmpty(dto.getReturnBookstore()) && dto.getReturnBookstore() == 1, TextbookWarehouseRecord::getReturnBookstoreNumber, 0)
+                .gt(ObjectUtils.isNotEmpty(dto.getReturnState()) && dto.getReturnState() == 1, TextbookWarehouseRecord::getRecedeNumber, 0)
                 .orderByDesc(TextbookWarehouseRecord::getCreateDate)
                 ;
         return this.selectJoinListPage(ConventPage.getPage(dto), TextbookWarehouseRecordPageVo.class, textbookWarehouseRecordMPJLambdaWrapper);

+ 45 - 12
src/main/java/com/xjrsoft/module/textbook/service/impl/WfTextbookClaimServiceImpl.java

@@ -101,6 +101,7 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
         IPage<DistributePageVo> page = this.selectJoinListPage(ConventPage.getPage(dto), DistributePageVo.class, wfTextbookClaimMPJLambdaWrapper);
 
         List<DistributePageVo> distributePageVos = page.getRecords();
+
         // 处理申领总数量和已经发放总数量
         if(ObjectUtils.isNotEmpty(distributePageVos)){
             List<Long> textbookClaimIds = distributePageVos.stream()
@@ -282,10 +283,21 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
             issueTotalNum += wfTextbookClaimItem.getIssueNumber();
         }
 
-
         // 获取所有入库记录
+        List<Long> textbookWarehouseRecordIds = new ArrayList<>();
+        for(ConfirmDistributeDto.TextbookClaimItem textbookClaimItem : dto.getTextbookClaimItemList()){
+            for(ConfirmDistributeDto.TextbookWarehouseRecords textbookWarehouseRecords: textbookClaimItem.getTextbookWarehouseRecords()){
+                textbookWarehouseRecordIds.add(textbookWarehouseRecords.getTextbookWarehouseRecordId());
+            }
+        }
+
+        if(ObjectUtils.isEmpty(textbookWarehouseRecordIds)){
+            throw new MyException("当前发放项来源入库单号无效");
+        }
+
         List<TextbookWarehouseRecord> textbookWarehouseRecordList = textbookWarehouseRecordMapper.selectList(
             Wrappers.lambdaQuery(TextbookWarehouseRecord.class)
+                    .in(TextbookWarehouseRecord::getId, textbookWarehouseRecordIds)
                     .eq(TextbookWarehouseRecord::getDeleteMark, DeleteMark.NODELETE.getCode())
         );
 
@@ -313,8 +325,8 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
         int oldOrderInteger = 0;
         int oldOrderLastInteger = 0;
 
-
         //操作每一个申领项
+        WfTextbookClaimItem updateWfTextbookClaimItem;
         for (ConfirmDistributeDto.TextbookClaimItem textbookClaimItem : dto.getTextbookClaimItemList()) {
 //            WfTextbookClaimItem wfTextbookClaimItem = wfTextbookClaimWfTextbookClaimItemMapper.selectById(textbookClaimItem.getTextbookClaimItemId());
             WfTextbookClaimItem wfTextbookClaimItem = wfTextbookClaimItemMap.get(textbookClaimItem.getTextbookClaimItemId());
@@ -343,6 +355,10 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
                     throw new MyException("未找到入库详细数据");
                 }
 
+                if(textbookWarehouseRecord.getRemainNumber() < textbookWarehouseRecords.getConfirmNumber()){
+                    throw new MyException("发放数量大于库存数量");
+                }
+
                 //更新教材入库中的的库存数量
                 textbookWarehouseRecordMapper.updateById(new TextbookWarehouseRecord() {{
                     setModifyUserId(StpUtil.getLoginIdAsLong());
@@ -370,6 +386,7 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
                         .last("limit 1")
                 ;
                 TextbookIssueRecord maxOrderNumber = textbookIssueRecordMapper.selectOne(maxOrderNumberLambdaQueryWrapper);
+
                 if(ObjectUtils.isNotEmpty(maxOrderNumber)
                         && ObjectUtils.isNotEmpty(maxOrderNumber.getOrderNumber())
                 ){
@@ -405,34 +422,48 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
                 if(ObjectUtils.isNotEmpty(dto.getReceiveUserId())){
                     textbookIssueRecord.setReceiveUserId(dto.getReceiveUserId());
                 }else {
-                    textbookIssueRecord.setReceiveUserId(StpUtil.getLoginIdAsLong());
+                    textbookIssueRecord.setReceiveUserId(wfTextbookClaim.getApplicantUserId());
                 }
                 textbookIssueRecord.setIssueUserId(StpUtil.getLoginIdAsLong());
                 textbookIssueRecord.setCreateDate(nowDate);;
                 textbookIssueRecord.setRemark(dto.getRemark());
                 textbookIssueRecord.setIssueTimes(issueTimes);
 
-                int sortCode = SortCodeUtil.getMaxSortCode(textbookIssueRecordMapper, TextbookIssueRecord.class, "sort_code");
-                textbookIssueRecord.setSortCode(sortCode + 1);
-
                 textbookIssueRecordMapper.insert(textbookIssueRecord);
             }
+
+            // 修改征订项发放数量
+            updateWfTextbookClaimItem = new WfTextbookClaimItem();
+            updateWfTextbookClaimItem.setId(wfTextbookClaimItem.getId());
+            updateWfTextbookClaimItem.setIssueNumber(
+                    ObjectUtils.isEmpty(wfTextbookClaimItem.getIssueNumber()) ? 0 : wfTextbookClaimItem.getIssueNumber()
+                    + textbookClaimItem.getConfirmTotalNumber()
+            );
+            wfTextbookClaimWfTextbookClaimItemMapper.updateById(updateWfTextbookClaimItem);
         }
 
+        // 查询当前申领所有子项是否已经完成, 发放数量大于申领数量
+        MPJLambdaWrapper<WfTextbookClaimItem> wfTextbookClaimItemMPJLambdaWrapper = new MPJLambdaWrapper<>();
+        wfTextbookClaimItemMPJLambdaWrapper
+                .select(WfTextbookClaimItem::getId)
+                .innerJoin(WfTextbookClaim.class, WfTextbookClaim::getId, WfTextbookClaimItem::getWfTextbookClaimId)
+                .lt(WfTextbookClaimItem::getIssueNumber, WfTextbookClaimItem::getApplicantNumber)
+                .eq(WfTextbookClaimItem::getWfTextbookClaimId, wfTextbookClaim.getId())
+                ;
+        long count = wfTextbookClaimWfTextbookClaimItemMapper.selectCount(wfTextbookClaimItemMPJLambdaWrapper);
+
         WfTextbookClaim updateWfTextbookClaim = new WfTextbookClaim();
-        updateWfTextbookClaim.setModifyUserId(StpUtil.getLoginIdAsLong());
-        updateWfTextbookClaim.setModifyDate(nowDate);
         updateWfTextbookClaim.setId(wfTextbookClaim.getId());
-        if(claimTotalNum > issueTotalNum){
+        if(count > 0){
             updateWfTextbookClaim.setStatus(2);
-        }
-        if(claimTotalNum > issueTotalNum){
+        }else {
             updateWfTextbookClaim.setStatus(3);
         }
         updateWfTextbookClaim.setIssueTimes(issueTimes);
+        updateWfTextbookClaim.setModifyUserId(StpUtil.getLoginIdAsLong());
+        updateWfTextbookClaim.setModifyDate(nowDate);
         //更新申领项中的已经发放数量
         wfTextbookClaimWfTextbookClaimMapper.updateById(updateWfTextbookClaim);
-
         return true;
     }
 
@@ -472,6 +503,8 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
 
             //申领类型是班级申领,学生代表可领取
             if (ClaimTypeEnum.ClaimClass.getCode().equals(wfTextbookClaim.getClaimType())
+                    && ObjectUtils.isNotEmpty(wfTextbookClaim.getApplicantUserId())
+                    && ObjectUtils.isNotEmpty(wfTextbookClaim.getStudentUserId())
                     && !Objects.equals(wfTextbookClaim.getApplicantUserId(), wfTextbookClaim.getStudentUserId())
             ) {
                 textbookClaimUserList.add(new TextbookClaimUser() {{

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

@@ -159,7 +159,7 @@ public class WfTextbookRecedeServiceImpl extends MPJBaseServiceImpl<WfTextbookRe
                     // 退书项对应的出库记录
                     oldTextbookIssueRecord = textbookIssueRecordMap.get(wfTextbookRecedeItem.getTextbookIssueRecordId());
                     // 退书项对应的出库记录对应的入库记录
-                    oldTextbookWarehouseRecord = textbookWarehouseRecordMap.get(oldTextbookIssueRecord.getId());
+                    oldTextbookWarehouseRecord = textbookWarehouseRecordMap.get(oldTextbookIssueRecord.getTextbookWarehouseRecordId());
 
                     // 退书类型是到教务处
                     if(RecedeTypeEnum.RecedeeDansOffice.getCode().equals(wfTextbookRecede.getRecedeType())

+ 5 - 2
src/main/resources/mapper/textbook/WfTextbookClaimMapper.xml

@@ -15,14 +15,17 @@
             t6.user_id,
             t7.name as claimUserIdCN
         FROM wf_textbook_claim t
+                 inner JOIN textbook_claim_user t6 ON (t6.wf_textbook_claim_id = t.id)
                  LEFT JOIN xjr_user t1 ON (t1.id = t.applicant_user_id)
                  LEFT JOIN base_class t2 ON (t2.id = t.class_id)
                  LEFT JOIN base_semester t3 ON (t3.id = t.base_semester_id)
                  LEFT JOIN xjr_user t4 ON (t4.id = t.student_user_id)
                  LEFT JOIN xjr_dictionary_detail t5 ON (t5.code = t.claim_type)
-                 LEFT JOIN textbook_claim_user t6 ON (t6.wf_textbook_claim_id = t.id)
                  LEFT JOIN xjr_user t7 ON (t7.id = t6.user_id)
-        WHERE t.delete_mark = 0 and t6.user_id = #{dto.userId}
+        WHERE t.delete_mark = 0
+          and t6.delete_mark = 0
+          and t6.user_id = #{dto.userId}
+          and t.status != 3
         order by t.create_date desc;
     </select>
 

+ 1 - 1
src/test/java/com/xjrsoft/module/textbook/service/impl/WfTextbookClaimServiceImplTest.java

@@ -18,7 +18,7 @@ class WfTextbookClaimServiceImplTest {
     private IWfTextbookClaimService wfTextbookClaimService;
     @Test
     void dataHandleAddClaimUserNode() {
-        wfTextbookClaimService.dataHandleAddClaimUserNode(1890244166749831168L);
+        wfTextbookClaimService.dataHandleAddClaimUserNode(1890353019495694336L);
     }
 
 }

+ 1 - 1
src/test/java/com/xjrsoft/module/textbook/service/impl/WfTextbookRecedeServiceImplTest.java

@@ -19,6 +19,6 @@ class WfTextbookRecedeServiceImplTest {
 
     @Test
     void dataHandle() {
-        wfTextbookRecedeService.dataHandle(1743231402795659264L);
+        wfTextbookRecedeService.dataHandle(1890396119899357184L);
     }
 }