杜洪波
2025-10-16 1614f88b7feb3be9451a6698875715365f09ae83
src/main/java/com/product/administration/service/ConferenceManagerService.java
@@ -26,6 +26,7 @@
import com.product.core.transfer.Transactional;
import com.product.core.websocket.service.WebsocketMesssageServiceThread;
import com.product.module.sys.entity.SystemUser;
import com.product.oa.task.service.TaskDistributionService;
import com.product.util.BaseUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -57,6 +58,8 @@
    QueryFilterService queryFilterService;
    @Autowired
    PermissionService permissionService;
    @Autowired
    TaskDistributionService taskDistributionService;
    /**
     * 会议室列表
@@ -1251,6 +1254,69 @@
       return baseDao.listTable(sbSql.toString(), new Object[] {}, fse.getInteger(CmnConst.PAGESIZE), fse.getInteger(CmnConst.CPAGE));
    }
    /**
     *    会议纪要详情
     * @param fse
     * @return
     */
    public FieldSetEntity findMeetingMinute(FieldSetEntity fse) {
       List<String> param = new ArrayList<>();
       String filter = null;
       if (StringUtils.isEmpty(fse.getUUID())) {
         filter = "B.uuid = ?";
         param.add(fse.getString("meeting_uuid"));
      } else {
         filter = "A.uuid = ?";
         param.add(fse.getUUID());
      }
       StringBuilder sbSql = new StringBuilder();
       sbSql.append("\nSELECT ");
       sbSql.append("\n  B.uuid AS meeting_uuid,B.meeting_topic,B.meeting_master,B.meeting_recorder,B.participator,CONCAT(start_time,'-',end_time)AS meeting_time, ");
       sbSql.append("\n  A.uuid,A.meeting_minute,A.copy_user,A.flow_flag");
       sbSql.append("\nFROM product_oa_conference_minute A");
       sbSql.append("\nRIGHT JOIN product_oa_conference_apply B ON B.uuid = A.meeting_uuid");
       sbSql.append("\nWHERE ").append(filter);
       FieldSetEntity fseMeetingMinute = baseDao.getFieldSetEntityBySQL(sbSql.toString(), param.toArray(), false);
       baseDao.loadPromptData(fseMeetingMinute);
       if(!StringUtils.isEmpty(fseMeetingMinute.getUUID())) {
          DataTableEntity dtMeetingMinute = baseDao.listTable("product_oa_conference_minute_sub", "main_uuid = ?", new Object[] {fseMeetingMinute.getUUID()});
          fseMeetingMinute.addSubDataTable(dtMeetingMinute);
       }
       return fseMeetingMinute;
    }
    /**
     * 自动发起任务
     * @param fse
     */
    public void autoMeetingtask(FieldSetEntity fse) {
       DataTableEntity dtMeetingMinute = fse.getSubDataTable("product_oa_conference_minute_sub");
       if(!BaseUtil.dataTableIsEmpty(dtMeetingMinute)) {
          for (int i = 0; i < dtMeetingMinute.getRows(); i++) {
            FieldSetEntity fseMeetingMinute = dtMeetingMinute.getFieldSetEntity(i);
            if ("1".equals(fseMeetingMinute.getString("item_task"))) {
               FieldSetEntity fseOaTask = new FieldSetEntity("product_oa_task_distribution");
               fseOaTask.setValue("task_name", fseMeetingMinute.getString("item_name"));
               fseOaTask.setValue("task_description", fseMeetingMinute.getString("item_detail"));
               fseOaTask.setValue("task_persons", fseMeetingMinute.getString("item_user"));
               fseOaTask.setValue("owner", fseMeetingMinute.getString("item_mananger"));
               fseOaTask.setValue("task_start_time", fseMeetingMinute.getString("plan_finish_time"));
               fseOaTask.setValue("task_finish_time", fseMeetingMinute.getString("plan_start_time"));
               fseOaTask.setValue("task_source", 1);
               fseOaTask.setValue("task_status", 1);
               fseOaTask.setValue("task_complete_sche", 0);
               fseOaTask.setValue("org_level_uuid", SpringMVCContextHolder.getCurrentUser().getOrg_level_uuid());
               baseDao.add(fseOaTask);
               // 发送任务消息
               taskDistributionService.sendTaskMessage(fseOaTask, fseMeetingMinute.getString("item_user"), "admin", 1, fseOaTask.getUUID());
            }
         }
       }
    }
    public void taskMeetingRminder() {
        DataTableEntity dt = baseDao.listTable(CmnConst.PRODUCT_OA_CONFERENCE_APPLY, " flow_flag=2 and ( to_remind IS NULL OR to_remind = 0 ) AND reminder_time > 0 and reminder_time>=(( UNIX_TIMESTAMP(start_time ) - UNIX_TIMESTAMP( now( ) ) ) / 60) ", new Object[]{});
        baseDao.loadPromptData(dt);