Browse Source

教材入库优化

大数据与最优化研究所 1 month ago
parent
commit
0e80a88012

+ 42 - 12
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookSubscriptionServiceImpl.java

@@ -103,8 +103,8 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
                         wrapper -> wrapper
                                 .selectAs(DictionaryDetail::getName, TextbookInstockroomListVo::getTextbookTypeCn)
                 )
-                .eq(TextbookSubscriptionItem::getTextbookSubscriptionId, dto.getTextbookSubscriptionId())
 
+                .eq(TextbookSubscriptionItem::getTextbookSubscriptionId, dto.getTextbookSubscriptionId())
                 .orderByAsc(TextbookSubscriptionItem::getInStockNum)
         ;
 
@@ -185,15 +185,18 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
         int teaNum = 0;
         BigDecimal totalPrice = BigDecimal.valueOf(0);
         BigDecimal currentPrice;
+        BigDecimal currentTotalPrice;
         for (TextbookSubscriptionItem textbookSubscriptionItem : textbookSubscriptionItemList) {
             stuNum += textbookSubscriptionItem.getStudentNum();
             teaNum += textbookSubscriptionItem.getTeacherNum();
 
-            currentPrice = textbookSubscriptionItem.getPrice().multiply(BigDecimal.valueOf(textbookSubscriptionItem.getDiscount()).divide(BigDecimal.valueOf(10), RoundingMode.DOWN))
-                    .multiply(BigDecimal.valueOf(textbookSubscriptionItem.getTeacherNum() + textbookSubscriptionItem.getStudentNum()))
-            ;
+            BigDecimal discount = BigDecimal.valueOf(textbookSubscriptionItem.getDiscount()).divide(BigDecimal.valueOf(10), 2, RoundingMode.DOWN);
+
+            currentPrice = textbookSubscriptionItem.getPrice().multiply(discount);
+
+            currentTotalPrice = currentPrice.multiply(BigDecimal.valueOf(textbookSubscriptionItem.getTeacherNum() + textbookSubscriptionItem.getStudentNum()));
 
-            totalPrice = totalPrice.add(currentPrice);
+            totalPrice = totalPrice.add(currentTotalPrice);
         }
         TextbookSubscriptionDetailVo textbookSubscriptionDetailVo = new TextbookSubscriptionDetailVo();
         textbookSubscriptionDetailVo.setId(String.valueOf(id));
@@ -256,8 +259,7 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
                 .leftJoin(XjrUser.class, XjrUser::getId, BaseClass::getTeacherId)
 
                 .eq(ObjectUtils.isNotEmpty(dto.getId()), TextbookSubscriptionItem::getTextbookSubscriptionId, dto.getId())
-                .eq(ObjectUtils.isNotEmpty(dto.getTextbookSubscriptionItemId()), TextbookSubscriptionItem::getId, dto.getId())
-                .eq(TextbookSubscriptionItem::getDeleteMark, DeleteMark.NODELETE.getCode())
+                .eq(ObjectUtils.isNotEmpty(dto.getTextbookSubscriptionItemId()), TextbookSubscriptionItem::getId, dto.getTextbookSubscriptionItemId())
                 .eq(TextbookSubscriptionClass::getDeleteMark, DeleteMark.NODELETE.getCode())
         ;
 
@@ -373,7 +375,9 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
 
         Map<Long, TextbookSubscriptionItem> itemByIdMap = new HashMap<>();
         for (TextbookSubscriptionItem el : textbookSubscriptionItemList) {
-            itemByIdMap.put(el.getId(), el);
+            if(ObjectUtils.isNotEmpty(el.getId()) && !itemByIdMap.containsKey(el.getId())){
+                itemByIdMap.put(el.getId(), el);
+            }
         }
 
         TextbookSubscriptionItem old = null;
@@ -389,8 +393,10 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
             TextbookSubscriptionItem updateItem = new TextbookSubscriptionItem();
             updateItem.setId(old.getId());
             updateItem.setDiscount(dto.getDiscount());
-            updateItem.setPrice(old.getPrice().multiply(BigDecimal.valueOf(dto.getDiscount()).divide(BigDecimal.valueOf(10), 2, RoundingMode.DOWN)));
+            updateItem.setPrice(old.getPrice().multiply(BigDecimal.valueOf(dto.getDiscount() / 10)));
             updateItem.setInStockNum(old.getInStockNum() + dto.getInNum());
+            updateItem.setModifyDate(new Date());
+            updateItem.setModifyUserId(StpUtil.getLoginIdAsLong());
             textbookSubscriptionTextbookSubscriptionItemMapper.updateById(updateItem);
 
             //新增入库记录
@@ -401,9 +407,11 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
             textbookWarehouseRecord.setWarehouseNumber(dto.getInNum());
             textbookWarehouseRecord.setPrice(old.getPrice());
             textbookWarehouseRecord.setDiscount(dto.getDiscount());
-            textbookWarehouseRecord.setSubtotal(old.getPrice().multiply(BigDecimal.valueOf(dto.getDiscount()).divide(BigDecimal.valueOf(10), 2, RoundingMode.DOWN)));
+            textbookWarehouseRecord.setSubtotal(old.getPrice().multiply(BigDecimal.valueOf(dto.getDiscount() / 10)));
             textbookWarehouseRecord.setTotalPrice(textbookWarehouseRecord.getSubtotal().multiply(BigDecimal.valueOf(dto.getInNum())));
             textbookWarehouseRecord.setWarehouseMode(WarehouseModeEnum.WmManual.getCode());
+            updateItem.setCreateDate(new Date());
+            updateItem.setCreateUserId(StpUtil.getLoginIdAsLong());
             textbookWarehouseRecordMapper.insert(textbookWarehouseRecord);
         }
 
@@ -588,17 +596,36 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
             throw new MyException("征订项已经被修改,刷新重试");
         }
 
+        MPJLambdaWrapper<TextbookSubscription> textbookSubscriptionMPJLambdaWrapper = new MPJLambdaWrapper<>();
+        textbookSubscriptionMPJLambdaWrapper
+                .select(TextbookSubscription.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscription.class).contains(x.getProperty()))
+                .eq(TextbookSubscriptionItem::getId, dto.getId())
+                .innerJoin(TextbookSubscriptionItem.class, TextbookSubscriptionItem::getTextbookSubscriptionId, TextbookSubscription::getId)
+        ;
+
+        TextbookSubscription textbookSubscription = this.selectJoinOne(TextbookSubscription.class, textbookSubscriptionMPJLambdaWrapper);
+
         // 判断变更状态
         int alterationType = 0;
-
+        TextbookSubscription updateTotalNum = new TextbookSubscription();
         if(!old.getStudentNum().equals(dto.getStudentNum())
-                && !old.getTeacherNum().equals(dto.getTeacherNum())
+                || !old.getTeacherNum().equals(dto.getTeacherNum())
         ){
             alterationType = 1;
+            if(ObjectUtils.isNotEmpty(textbookSubscription)){
+                updateTotalNum.setId(textbookSubscription.getId());
+                updateTotalNum.setSum(textbookSubscription.getSum() + (dto.getStudentNum() - old.getStudentNum()) + (dto.getTeacherNum() - old.getTeacherNum()));
+                this.updateById(updateTotalNum);
+            }
         }
 
         if(!old.getTextbookId().equals(dto.getTextbookId())){
             alterationType = 2;
+            if(ObjectUtils.isNotEmpty(textbookSubscription)){
+                updateTotalNum.setId(textbookSubscription.getId());
+                updateTotalNum.setSum(textbookSubscription.getSum() - (old.getTeacherNum() + old.getStudentNum()) + (dto.getTeacherNum() + dto.getStudentNum()));
+                this.updateById(updateTotalNum);
+            }
         }
 
         // 将历史记录保存到历史变更记录表
@@ -643,6 +670,9 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
         textbookSubscriptionItemHistory.setAlterationType(alterationType);
         textbookSubscriptionItemHistoryMapper.insert(textbookSubscriptionItemHistory);
 
+        // 变更征订总数量
+
+
         //变更当前记录
         TextbookSubscriptionItem updateItem = new TextbookSubscriptionItem();
         BeanUtils.copyProperties(dto, updateItem);