Pārlūkot izejas kodu

1、内容下架 更新push表
2、内容下架 更新时序表

lihao16 5 mēneši atpakaļ
vecāks
revīzija
f49465a1bd
17 mainītis faili ar 150 papildinājumiem un 47 dzēšanām
  1. 8 6
      smsb-modules/smsb-source/src/main/java/com/inspur/source/controller/SmsbItemPushDeviceController.java
  2. 5 0
      smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/SmsbItemPush.java
  3. 1 1
      smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/SmsbItemPushPlaylist.java
  4. 5 0
      smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/bo/SmsbItemPushBo.java
  5. 1 1
      smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/bo/SmsbItemPushPlaylistBo.java
  6. 1 1
      smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/vo/SmsbItemPushPlaylistVo.java
  7. 4 0
      smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/vo/SmsbItemPushVo.java
  8. 9 3
      smsb-modules/smsb-source/src/main/java/com/inspur/source/mapper/SmsbItemPushMapper.java
  9. 6 0
      smsb-modules/smsb-source/src/main/java/com/inspur/source/mapper/SmsbItemPushPlaylineMapper.java
  10. 6 0
      smsb-modules/smsb-source/src/main/java/com/inspur/source/mapper/SmsbItemPushPlaylistMapper.java
  11. 3 1
      smsb-modules/smsb-source/src/main/java/com/inspur/source/service/ISmsbItemPushDeviceService.java
  12. 45 30
      smsb-modules/smsb-source/src/main/java/com/inspur/source/service/impl/SmsbItemPushDeviceServiceImpl.java
  13. 17 1
      smsb-modules/smsb-source/src/main/java/com/inspur/source/service/impl/SmsbItemPushServiceImpl.java
  14. 11 0
      smsb-modules/smsb-source/src/main/resources/mapper/SmsbItemPushMapper.xml
  15. 14 1
      smsb-modules/smsb-source/src/main/resources/mapper/SmsbItemPushPlaylineMapper.xml
  16. 7 0
      smsb-modules/smsb-source/src/main/resources/mapper/SmsbItemPushPlaylistMapper.xml
  17. 7 2
      smsb-plus-ui/src/views/smsb/itemPush/index.vue

+ 8 - 6
smsb-modules/smsb-source/src/main/java/com/inspur/source/controller/SmsbItemPushDeviceController.java

@@ -1,15 +1,16 @@
 package com.inspur.source.controller;
 
+import com.inspur.source.domain.bo.SmsbItemPushDeviceBo;
 import com.inspur.source.domain.bo.SmsbItemPushPlaylistBo;
 import com.inspur.source.domain.vo.SmsbItemPushPlaylistVo;
 import com.inspur.source.service.ISmsbItemPushDeviceService;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.domain.R;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.log.enums.BusinessType;
 import org.dromara.common.web.core.BaseController;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -98,14 +99,15 @@ public class SmsbItemPushDeviceController extends BaseController {
         return toAjax(smsbItemPushDeviceService.deleteWithValidByIds(List.of(ids), true));
     }
 
-    *//**
+    */
+    /**
      * 内容发布设备下架
      *
      * @param bo
-     *//*
+     */
     @Log(title = "内容发布下架", businessType = BusinessType.DELETE)
     @DeleteMapping("/remove")
     public R<Void> pushRemoveDevice(@RequestBody SmsbItemPushDeviceBo bo) {
         return smsbItemPushDeviceService.pushRemoveDevice(bo);
-    }*/
+    }
 }

+ 5 - 0
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/SmsbItemPush.java

@@ -63,5 +63,10 @@ public class SmsbItemPush extends TenantEntity {
      */
     private Long taskId;
 
+    /**
+     * 0-下架 1-上架
+     */
+    private Integer isUse;
+
 
 }

+ 1 - 1
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/SmsbItemPushPlaylist.java

@@ -44,7 +44,7 @@ public class SmsbItemPushPlaylist {
     private Integer sortNum;
 
     /**
-     * 发布状态
+     * 发布状态 1-待下发 2-下发中 3-已下发 4-已下架
      */
     private Integer pushState;
 

+ 5 - 0
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/bo/SmsbItemPushBo.java

@@ -59,5 +59,10 @@ public class SmsbItemPushBo extends BaseEntity {
 
     private String tenantId;
 
+    /**
+     * 0-下架 1-上架
+     */
+    private Integer isUse;
+
 
 }

+ 1 - 1
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/bo/SmsbItemPushPlaylistBo.java

@@ -37,7 +37,7 @@ public class SmsbItemPushPlaylistBo extends BaseEntity {
     private Integer sortNum;
 
     /**
-     * 发布状态
+     * 发布状态 1-待下发 2-下发中 3-已下发 4-已下架
      */
     private Integer pushState;
 

+ 1 - 1
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/vo/SmsbItemPushPlaylistVo.java

@@ -47,7 +47,7 @@ public class SmsbItemPushPlaylistVo implements Serializable {
     private Integer sortNum;
 
     /**
-     * 发布状态
+     * 发布状态 1-待下发 2-下发中 3-已下发 4-已下架
      */
     private Integer pushState;
 

+ 4 - 0
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/vo/SmsbItemPushVo.java

@@ -81,5 +81,9 @@ public class SmsbItemPushVo implements Serializable {
      */
     private Long taskId;
 
+    /**
+     * 0-下架 1-上架
+     */
+    private Integer isUse;
 
 }

+ 9 - 3
smsb-modules/smsb-source/src/main/java/com/inspur/source/mapper/SmsbItemPushMapper.java

@@ -51,9 +51,15 @@ public interface SmsbItemPushMapper extends BaseMapperPlus<SmsbItemPush, SmsbIte
     Page<SmsbItemPushVo> selectFlowFinishList(@Param("page") Page<SmsbItemPush> page, @Param("bo") SmsbItemPushBo bo);
 
     /**
-     * 节目下发 - 查询设备在播节目
-     * @param deviceId
+     * 下架超过播单结束时间的旧播单
+     * @param pushIds
+     * @param isUse
+     */
+    void updateBatchIsUseByIds(@Param("pushIds") List<Long> pushIds, @Param("isUse") int isUse);
+
+    /**
+     * 查询已经根据当前时间超期的push
      * @return
      */
-    // SmsbItemPushVo selectDeviceNowPlayPush(@Param("deviceId") String deviceId);
+    List<SmsbItemPushVo> selectOverTimePushList();
 }

+ 6 - 0
smsb-modules/smsb-source/src/main/java/com/inspur/source/mapper/SmsbItemPushPlaylineMapper.java

@@ -25,4 +25,10 @@ public interface SmsbItemPushPlaylineMapper extends BaseMapperPlus<SmsbItemPushP
     List<SmsbItemPushPlaylineVo> selectExistTimeNodes(@Param("startTime") String startTime, @Param("endTime") String endTime,
                                                       @Param("deviceId") Long deviceId);
 
+    /**
+     * 节目下架,更新时序
+     * @param pushId
+     * @param deviceIds
+     */
+    void deleteByPushIdAndDeviceIds(@Param("pushId") Long pushId, @Param("deviceIds") List<Long> deviceIds);
 }

+ 6 - 0
smsb-modules/smsb-source/src/main/java/com/inspur/source/mapper/SmsbItemPushPlaylistMapper.java

@@ -23,4 +23,10 @@ public interface SmsbItemPushPlaylistMapper extends BaseMapperPlus<SmsbItemPushP
      */
     List<SmsbItemPushPlaylistVo> selectDeviceListByPushId(@Param("pushId") Long pushId);
 
+    /**
+     * 更新设备播单状态
+     * @param pushIds
+     * @param pushState
+     */
+    void updateBatchPushStateByIds(@Param("pushIds") List<Long> pushIds, @Param("pushState") int pushState);
 }

+ 3 - 1
smsb-modules/smsb-source/src/main/java/com/inspur/source/service/ISmsbItemPushDeviceService.java

@@ -1,7 +1,9 @@
 package com.inspur.source.service;
 
+import com.inspur.source.domain.bo.SmsbItemPushDeviceBo;
 import com.inspur.source.domain.bo.SmsbItemPushPlaylistBo;
 import com.inspur.source.domain.vo.SmsbItemPushPlaylistVo;
+import org.dromara.common.core.domain.R;
 
 import java.util.List;
 
@@ -79,5 +81,5 @@ public interface ISmsbItemPushDeviceService {
      * @param bo
      * @return
      */
-    // public R<Void> pushRemoveDevice(SmsbItemPushDeviceBo bo);
+    public R<Void> pushRemoveDevice(SmsbItemPushDeviceBo bo);
 }

+ 45 - 30
smsb-modules/smsb-source/src/main/java/com/inspur/source/service/impl/SmsbItemPushDeviceServiceImpl.java

@@ -3,29 +3,23 @@ package com.inspur.source.service.impl;
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.inspur.device.domain.constants.ResultCodeEnum;
 import com.inspur.device.domain.vo.SmsbDeviceVo;
 import com.inspur.device.service.ISmsbDeviceService;
 import com.inspur.netty.message.push.PushMessageType;
 import com.inspur.netty.util.PushMsgUtil;
-import com.inspur.source.domain.SmsbItemPushDevice;
+import com.inspur.source.domain.SmsbItemPush;
+import com.inspur.source.domain.SmsbItemPushPlaylist;
 import com.inspur.source.domain.bo.SmsbItemPushDeviceBo;
 import com.inspur.source.domain.bo.SmsbItemPushPlaylistBo;
-import com.inspur.source.domain.vo.SmsbItemPushDeviceVo;
 import com.inspur.source.domain.vo.SmsbItemPushPlaylistVo;
-import com.inspur.source.mapper.SmsbItemPushDeviceMapper;
+import com.inspur.source.mapper.SmsbItemPushMapper;
+import com.inspur.source.mapper.SmsbItemPushPlaylineMapper;
 import com.inspur.source.mapper.SmsbItemPushPlaylistMapper;
 import com.inspur.source.service.ISmsbItemPushDeviceService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.domain.R;
-import org.dromara.common.core.utils.DateUtils;
-import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
@@ -44,6 +38,12 @@ public class SmsbItemPushDeviceServiceImpl implements ISmsbItemPushDeviceService
 
     private final SmsbItemPushPlaylistMapper smsbItemPushPlaylistMapper;
 
+    private final ISmsbDeviceService smsbDeviceService;
+
+    private final SmsbItemPushMapper smsbItemPushMapper;
+
+    private final SmsbItemPushPlaylineMapper smsbItemPushPlaylineMapper;
+
     /**
      * 查询内容发布设备
      *
@@ -145,8 +145,6 @@ public class SmsbItemPushDeviceServiceImpl implements ISmsbItemPushDeviceService
     /**
      * 校验并批量删除内容发布设备信息
      *
-     * @param ids     待删除的主键集合
-     * @param isValid 是否进行有效性校验
      * @return 是否删除成功
      */
     /*@Override
@@ -157,32 +155,49 @@ public class SmsbItemPushDeviceServiceImpl implements ISmsbItemPushDeviceService
         return baseMapper.deleteByIds(ids) > 0;
     }*/
 
-    /*@Override
+    @Override
     public R<Void> pushRemoveDevice(SmsbItemPushDeviceBo bo) {
         if (CollectionUtil.isEmpty(bo.getDeviceIds())) {
             return R.fail(Integer.parseInt(ResultCodeEnum.DEVICE_IDS_IS_NULL.getValue()), ResultCodeEnum.DEVICE_IDS_IS_NULL.getMessage());
         }
         Integer pushState = 4;
+        Long pushId = bo.getPushId();
+        // 1 更新播单设备状态为 4
         for (Long deviceId : bo.getDeviceIds()) {
-            baseMapper.update(new LambdaUpdateWrapper<SmsbItemPushDevice>()
-                .set(SmsbItemPushDevice::getPushState, pushState)
-                .set(SmsbItemPushDevice::getUpdateTime, DateUtils.getNowDate())
-                .eq(SmsbItemPushDevice::getDeviceId, deviceId)
-                .eq(SmsbItemPushDevice::getPushId, bo.getPushId()));
-            // 发送长连接消息给设备
-            pushRemoveMessage(deviceId, bo.getPushId());
+            smsbItemPushPlaylistMapper.update(new LambdaUpdateWrapper<SmsbItemPushPlaylist>()
+                .set(SmsbItemPushPlaylist::getPushState, pushState)
+                .eq(SmsbItemPushPlaylist::getDeviceId, deviceId)
+                .eq(SmsbItemPushPlaylist::getPushId, bo.getPushId()));
+        }
+        // 2 查询全部设备是否已下架
+        List<SmsbItemPushPlaylistVo> isUsePlaylist = smsbItemPushPlaylistMapper.selectVoList(new LambdaQueryWrapper<SmsbItemPushPlaylist>()
+            .eq(SmsbItemPushPlaylist::getPushId, pushId)
+            .ne(SmsbItemPushPlaylist::getPushState,4));
+        if (CollectionUtil.isEmpty(isUsePlaylist)) {
+            // 3 更新播单状态为 0
+            SmsbItemPush pushUpdate = new SmsbItemPush();
+            pushUpdate.setId(pushId);
+            pushUpdate.setIsUse(0);
+            smsbItemPushMapper.updateById(pushUpdate);
         }
+        // 4 时序更新
+        smsbItemPushPlaylineMapper.deleteByPushIdAndDeviceIds(pushId,bo.getDeviceIds());
+
+        // 5 发送长连接消息给设备
+        pushRemoveMessage(bo.getDeviceIds(), bo.getPushId());
         return R.ok();
-    }*/
+    }
 
-    /*private void pushRemoveMessage(Long deviceId, Long pushId) {
-        SmsbDeviceVo deviceVo = smsbDeviceService.getDeviceCacheById(deviceId);
-        if (null == deviceVo) {
-            return;
+    private void pushRemoveMessage(List<Long> deviceIds, Long pushId) {
+        for (Long deviceId : deviceIds) {
+            SmsbDeviceVo deviceVo = smsbDeviceService.getDeviceCacheById(deviceId);
+            if (null == deviceVo) {
+                return;
+            }
+            String identifier = deviceVo.getIdentifier();
+            String nettyMessage = PushMessageType.CONTENT_REMOVE.getValue() + "/" + pushId;
+            boolean pushResult = PushMsgUtil.sendV2(identifier, nettyMessage);
+            log.info("push content remove identifier: {}, result:{}", identifier, pushResult);
         }
-        String identifier = deviceVo.getIdentifier();
-        String nettyMessage = PushMessageType.CONTENT_REMOVE.getValue() + "/" + pushId;
-        boolean pushResult = PushMsgUtil.sendV2(identifier, nettyMessage);
-        log.info("push content remove identifier: {}, result:{}", identifier, pushResult);
-    }*/
+    }
 }

+ 17 - 1
smsb-modules/smsb-source/src/main/java/com/inspur/source/service/impl/SmsbItemPushServiceImpl.java

@@ -10,7 +10,6 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.inspur.device.domain.SmsbDevice;
 import com.inspur.device.domain.SmsbDeviceTask;
 import com.inspur.device.domain.constants.DeviceTaskConstants;
 import com.inspur.device.domain.constants.ResultCodeEnum;
@@ -249,6 +248,7 @@ public class SmsbItemPushServiceImpl implements ISmsbItemPushService {
         Date endDate = DateUtils.parseDate(bo.getDateRange().get(1) + " 23:59:59");
         add.setStartDate(startDate);
         add.setEndDate(endDate);
+        add.setIsUse(1);
         boolean flag = baseMapper.insert(add) > 0;
         if (!flag) {
             R.fail(ResultCodeEnum.INTERNAL_SERVER_ERROR);
@@ -260,10 +260,26 @@ public class SmsbItemPushServiceImpl implements ISmsbItemPushService {
         if (bo.getItemType() == 1 || bo.getItemType() == 2) {
             addItemPushRel(bo.getId(), bo.getItemIds());
         }
+        // 下架超过播单结束时间的旧播单
+        updateOldItemPushToNoUse();
+        // 提交审核
         submitReview(add.getId());
         return R.ok();
     }
 
+    private void updateOldItemPushToNoUse() {
+        // 查询出所有上架且已超期的push ids
+        List<SmsbItemPushVo> overTimeList = baseMapper.selectOverTimePushList();
+        if (CollectionUtil.isEmpty(overTimeList)) {
+            return;
+        }
+        List<Long> pushIds = overTimeList.stream().map(SmsbItemPushVo::getId).collect(Collectors.toList());
+        // 更新push表为下架
+        baseMapper.updateBatchIsUseByIds(pushIds, 0);
+        // 更新播单表push_state
+        smsbItemPushPlaylistMapper.updateBatchPushStateByIds(pushIds, 4);
+    }
+
     private void saveItemPushPlaylist(SmsbItemPushBo bo) {
         List<String> deviceIds = bo.getDeviceIds();
         if (CollectionUtil.isEmpty(deviceIds)) {

+ 11 - 0
smsb-modules/smsb-source/src/main/resources/mapper/SmsbItemPushMapper.xml

@@ -79,4 +79,15 @@
         <if test="bo.level != null and bo.level != ''"> and sip.level = #{bo.level}</if>
         order by sip.create_time desc
     </select>
+
+    <select id="selectOverTimePushList" resultType="com.inspur.source.domain.vo.SmsbItemPushVo">
+        SELECT * from smsb_item_push where now() <![CDATA[ >= ]]> end_date and is_use = 1
+    </select>
+
+    <update id="updateBatchIsUseByIds">
+        update smsb_item_push set is_use = #{isUse} where id in
+        <foreach collection="pushIds" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
 </mapper>

+ 14 - 1
smsb-modules/smsb-source/src/main/resources/mapper/SmsbItemPushPlaylineMapper.xml

@@ -5,7 +5,20 @@
 <mapper namespace="com.inspur.source.mapper.SmsbItemPushPlaylineMapper">
 
     <select id="selectExistTimeNodes" resultType="com.inspur.source.domain.vo.SmsbItemPushPlaylineVo">
-        SELECT * from smsb_item_push_playline where device_id = #{deviceId} and start_time <![CDATA[ >= ]]> #{startTime} and end_time <![CDATA[ <= ]]> #{endTime}
+        SELECT *
+        from smsb_item_push_playline
+        where device_id = #{deviceId}
+          and start_time <![CDATA[ >= ]]> #{startTime}
+          and end_time <![CDATA[ <= ]]> #{endTime}
     </select>
 
+    <delete id="deleteByPushIdAndDeviceIds">
+        delete from
+        smsb_item_push_playline
+        where push_id = #{pushId} and device_id in
+        <foreach collection="deviceIds" item="deviceId" open="(" separator="," close=")">
+            #{deviceId}
+        </foreach>
+    </delete>
+
 </mapper>

+ 7 - 0
smsb-modules/smsb-source/src/main/resources/mapper/SmsbItemPushPlaylistMapper.xml

@@ -15,4 +15,11 @@
             sipp.push_id = #{pushId}
     </select>
 
+    <update id="updateBatchPushStateByIds">
+        UPDATE smsb_item_push_playlist SET push_state = #{pushState} WHERE id IN
+        <foreach collection="pushIds" item="pushId" open="(" separator="," close=")">
+            #{pushId}
+        </foreach>
+    </update>
+
 </mapper>

+ 7 - 2
smsb-plus-ui/src/views/smsb/itemPush/index.vue

@@ -96,6 +96,11 @@
               <dict-tag :options="smsb_push_state" :value="scope.row.status" />
             </template>
           </el-table-column>
+          <el-table-column label="上架状态" align="center" width="100" prop="isUse">
+            <template #default="scope">
+              <dict-tag :options="smsb_push_isuse" :value="scope.row.isUse" />
+            </template>
+          </el-table-column>
           <el-table-column label="生效日期" align="left" prop="startDate" width="140">
             <template #default="scope">
               <span>{{ parseTime(scope.row.startDate, '{y}-{m}-{d}') }}</span>
@@ -310,8 +315,8 @@ import {ItemPushDeviceVO} from '@/api/smsb/source/item_push_device_type';
 import {listItemPushDeviceV2, removeItemPushDevice} from '@/api/smsb/source/item_push_device';
 
 const {proxy} = getCurrentInstance() as ComponentInternalInstance;
-const {smsb_push_state, smsb_push_device_state, smsb_push_type, smsb_push_level} = toRefs<any>(
-  proxy?.useDict('smsb_push_state', 'smsb_push_device_state', 'smsb_push_type', 'smsb_push_level')
+const {smsb_push_state, smsb_push_device_state, smsb_push_type, smsb_push_level,smsb_push_isuse} = toRefs<any>(
+  proxy?.useDict('smsb_push_state', 'smsb_push_device_state', 'smsb_push_type', 'smsb_push_level','smsb_push_isuse')
 );
 
 const itemPushList = ref<ItemPushVO[]>([]);