Bläddra i källkod

补助设置数据双向同步功能开发

baiyun 1 år sedan
förälder
incheckning
88784b21ed

+ 3 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/IPtSubsidyitemService.java

@@ -1,6 +1,7 @@
 package org.dromara.backstage.cardCenter.service;
 
 import org.dromara.backstage.cardCenter.domain.PtSubsidyitem;
+import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyBo;
 import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyReportBo;
 import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyReportVo;
 import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyitemVo;
@@ -77,4 +78,6 @@ public interface IPtSubsidyitemService {
      * @return 补助明细
      */
     List<PtSubsidyitemVo> selectPostSubsidyItem();
+
+    Boolean updateBySubsidyBo(PtSubsidyBo bo);
 }

+ 27 - 6
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/impl/PtSubsidyServiceImpl.java

@@ -9,6 +9,7 @@ import org.dromara.backstage.cardCenter.domain.PtSubsidyitem;
 import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyBo;
 import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyitemBo;
 import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyVo;
+import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyitemVo;
 import org.dromara.backstage.cardCenter.mapper.PtSubsidyMapper;
 import org.dromara.backstage.cardCenter.mapper.PtSubsidyitemMapper;
 import org.dromara.backstage.cardCenter.service.IPtSubsidyService;
@@ -104,6 +105,7 @@ public class PtSubsidyServiceImpl implements IPtSubsidyService {
             });
             Collection<PtSubsidyitem> list = MapstructUtils.convert(subsidyitemBoList, PtSubsidyitem.class);
             subsidyitemMapper.insertBatch(list);
+            //将ID信息写入请求参数,用于数据双向同步
             Map<Long,Long> itemIdMap = new HashMap<>();
             list.stream().forEach(subsidyitem ->{
                 itemIdMap.put(subsidyitem.getUserId(), subsidyitem.getItemId());
@@ -127,14 +129,33 @@ public class PtSubsidyServiceImpl implements IPtSubsidyService {
         PtSubsidy update = MapstructUtils.convert(bo, PtSubsidy.class);
         validEntityBeforeSave(update);
         boolean flag = baseMapper.updateById(update) > 0;
-
-        if(flag && bo.getPtSubsidyItemList() != null){
-            List<PtSubsidyitemBo> subsidyitemBoList = bo.getPtSubsidyItemList();
-            subsidyitemBoList.stream().forEach(subsidyitemBo ->{
+        List<PtSubsidyitemBo> itemBoList = bo.getPtSubsidyItemList();
+        if(flag && itemBoList != null){
+            //根据补助ID查询全部补助明细人员
+            PtSubsidyitemBo itemQueryBo = new PtSubsidyitemBo();
+            itemQueryBo.setMainId(bo.getMainId());
+            List<Long> dbItems =
+                subsidyitemService.queryList(itemQueryBo).stream().map(res -> res.getItemId()).toList();
+            //过滤出本次新增的人员列表
+            List<PtSubsidyitemBo> addItemBoList =
+                itemBoList.stream().filter(itemBo -> !dbItems.contains(itemBo.getItemId())).toList();
+            //设置补助明细信息
+            addItemBoList.stream().forEach(subsidyitemBo ->{
                 setSubsidyInfo(subsidyitemBo, bo);
             });
-            Collection<PtSubsidyitem> list = MapstructUtils.convert(subsidyitemBoList, PtSubsidyitem.class);
-            subsidyitemMapper.insertOrUpdateBatch(list);
+            Collection<PtSubsidyitem> addItemList = MapstructUtils.convert(addItemBoList, PtSubsidyitem.class);
+            //批量插入本次新增的补助明细人员
+            subsidyitemMapper.insertBatch(addItemList);
+            //修改之前批次的补助明细信息
+            subsidyitemService.updateBySubsidyBo(bo);
+            //将ID信息写入请求参数,用于数据双向同步
+            Map<Long,Long> itemIdMap = new HashMap<>();
+            addItemList.stream().forEach(subsidyitem ->{
+                itemIdMap.put(subsidyitem.getUserId(), subsidyitem.getItemId());
+            });
+            itemBoList.stream().forEach(subsidyitemBo ->{
+                subsidyitemBo.setItemId(itemIdMap.get(subsidyitemBo.getUserId()));
+            });
         }
         return flag;
     }

+ 13 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/impl/PtSubsidyitemServiceImpl.java

@@ -1,10 +1,12 @@
 package org.dromara.backstage.cardCenter.service.impl;
 
 import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import org.dromara.backstage.basics.domain.bo.PtAccountBo;
 import org.dromara.backstage.basics.domain.vo.PtAccountVo;
 import org.dromara.backstage.basics.mapper.PtAccountMapper;
 import org.dromara.backstage.basics.service.IPtAccountService;
+import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyBo;
 import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyReportBo;
 import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyReportVo;
 import org.dromara.backstage.payment.domain.PtUserAccount;
@@ -197,4 +199,15 @@ public class PtSubsidyitemServiceImpl implements IPtSubsidyitemService {
     public List<PtSubsidyitemVo> selectPostSubsidyItem() {
         return baseMapper.selectPostSubsidyItem(DateUtil.date().toString("yyyy-MM-dd HH:mm:ss"));
     }
+
+    @Override
+    public Boolean updateBySubsidyBo(PtSubsidyBo bo) {
+        UpdateWrapper<PtSubsidyitem> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("main_id", bo.getMainId());
+        updateWrapper.set("fill_Money", bo.getFillMoney());
+        updateWrapper.set("fill_date", bo.getFillDate());
+        updateWrapper.set("subsidy_Type", bo.getSubsidyType());
+
+        return baseMapper.update(null, updateWrapper) > 0;
+    }
 }