杜洪波
2024-08-19 1d1d34b48e6e80bea350d805d8ff2564ca226f25
src/main/java/com/product/administration/service/ConferenceManagerService.java
@@ -111,10 +111,21 @@
    @Transactional
    @Override
    public boolean saveConferenceRoom(FieldSetEntity fse) throws BaseException {
       //重名验证对象
       FieldSetEntity nameVerification = null;
        if (StringUtils.isEmpty(fse.getUUID())) {
            fse.setValue(CmnConst.ORG_LEVEL_UUID, SpringMVCContextHolder.getCurrentUser().getOrg_level_uuid());
        }
            nameVerification = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_OA_CONFERENCE_ROOM_CONFIG, "room_name=?", new Object[] {fse.getString("room_name")}, false);
        }else {
           nameVerification = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_OA_CONFERENCE_ROOM_CONFIG, "room_name=? and uuid!=?", new Object[] {fse.getString("room_name"), fse.getUUID()}, false);
      }
        if (nameVerification!=null) {
         throw new BaseException(SystemCode.CONFERENCE_ROOM_SAVE_FIAL_DUPLICATE_NAME.getValue(), SystemCode.CONFERENCE_ROOM_SAVE_FIAL_DUPLICATE_NAME.getText());
      }
        BaseUtil.createCreatorAndCreationTime(SpringMVCContextHolder.getCurrentUser(), fse);
        //重名验证
        return baseDao.saveFieldSetEntity(fse);
    }
@@ -189,6 +200,117 @@
        return baseDao.delete(fse.getTableName(), fse.getUUID().split(","));
    }
    @Override
    public List getKbData(FieldSetEntity fse) throws BaseException {
        List<Object>param=new ArrayList<>();
       String meeting_date= fse.getString("meeting_date");
        String meeting_resource = fse.getString("meeting_resource");
        param.add(meeting_date);
        if(!StringUtils.isEmpty(meeting_resource)){
            String replace_meeting_resource = meeting_resource.replace(",", "%");
            meeting_resource="%"+replace_meeting_resource+"%";
            param.add(meeting_resource);
        }
        StringBuilder bs=new StringBuilder();
        bs.append(" SELECT DISTINCT y.*, g.room_name,g.uuid as meet_room_uuid ");
        bs.append(" FROM product_oa_conference_apply y");
        bs.append(" left JOIN product_oa_conference_room_config g ");
        bs.append(" on y.meeting_room=g.uuid ");
        bs.append(" where DATE_FORMAT(y.start_time,\"%Y-%m-%d\")=?");
        if(!StringUtils.isEmpty(meeting_resource)){
            bs.append(" and  y.meeting_resource like ? ");
        }
        bs.append(" ORDER BY y.start_time");
        DataTableEntity dataTableEntity = baseDao.listTable(bs.toString(), param.toArray());
        List<String> list=new ArrayList();
        List<HashMap> listDate=new ArrayList<>();
        //构造所需要的格式
        for(int i=0;i<dataTableEntity.getRows();i++){
            FieldSetEntity fieldSetEntity = dataTableEntity.getData().get(i);
            if(!list.contains(fieldSetEntity.getValue("room_name").toString())){
                HashMap<String,Object> hashMap=new HashMap<>();
                hashMap.put("room_name",fieldSetEntity.getValue("room_name").toString());
                hashMap.put("uuid",fieldSetEntity.getValue("meet_room_uuid").toString());
                Object getStartTime = dataTableEntity.getData().get(0).getValue("start_time");
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String time = dateFormat.format(getStartTime);
                hashMap.put("start_time",time);
                list.add(fieldSetEntity.getValue("room_name").toString());
                listDate.add(hashMap);
            }
            fieldSetEntity.setValue("parent",fieldSetEntity.getValue("meet_room_uuid").toString());
            HashMap<String,Object> hashMap=new HashMap<>();
            for (int j = 0; j < fieldSetEntity.getValues().keySet().size(); j++) {
                if(fieldSetEntity.getValues().keySet().toArray()[j].toString().equals("start_time") || fieldSetEntity.getValues().keySet().toArray()[j].toString().equals("end_time")){
                    Object meeting_time = fieldSetEntity.getValue(fieldSetEntity.getValues().keySet().toArray()[j].toString());
                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    String time = dateFormat.format(meeting_time);
                    hashMap.put(fieldSetEntity.getValues().keySet().toArray()[j].toString(),time);
                }else {
                    hashMap.put(fieldSetEntity.getValues().keySet().toArray()[j].toString(),fieldSetEntity.getValue(fieldSetEntity.getValues().keySet().toArray()[j].toString()));
                }
            }
            listDate.add(hashMap);
        }
        return  listDate;
    }
    @Override
    public DataTableEntity getMeetingDetails(FieldSetEntity fse) throws BaseException {
        //String uuid = fse.getString("uuid");
        String uuid="96f161b4-6360-40ba-8dc1-72bb39d56be4";
        /*if(!StringUtils.isEmpty(uuid)){*/
            List<Object>param=new ArrayList<>();
            param.add(uuid);
            StringBuilder sb=new StringBuilder();
            sb.append(" SELECT b.uuid,b.start_time,b.end_time,b.record_man,b.record_master,b.status, ");
            sb.append(" CONCAT(DATE_FORMAT(b.start_time,\"%H-%i-%S\"),'~',DATE_FORMAT(b.end_time,\"%H-%i-%S\"))  as time_quantum,");
            sb.append(" DATE_FORMAT(b.start_time,\"%Y-%m-%d\") as meeting_date,");
            sb.append(" GROUP_CONCAT(b.dict_label   SEPARATOR ',') AS meeting_resouces ");
            sb.append(" FROM (");
            sb.append(" SELECT DISTINCT a.uuid,a.start_time,a.end_time,a.record_man,a.record_master,a.status,t.dict_label ");
            sb.append(" FROM (");
            sb.append("  SELECT T1.*, ");
            sb.append(" SUBSTRING_INDEX( SUBSTRING_INDEX( T1.meeting_resource, ',', T2.digit + 1 ), ',',- 1 ) AS type ");
            sb.append(" FROM product_oa_conference_apply T1 ");
            sb.append(" JOIN ( SELECT 0 AS digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 ) T2");
            sb.append(" ON T2.digit < ( length( T1.meeting_resource )- length( REPLACE ( T1.meeting_resource, ',', '' ))+ 1 )");
            sb.append(" WHERE t1.uuid = ? ");
            sb.append(" ) a");
            sb.append(" LEFT JOIN product_sys_dict t ON a.type = t.dict_value ");
            sb.append(" AND t.dict_name = '会议室资源'");
            sb.append(" )b ");
            sb.append(" group by b.uuid,b.start_time,b.end_time,b.record_man,b.record_master,b.status ");
            DataTableEntity dataTableEntity = baseDao.listTable(sb.toString(), param.toArray());
            for (int i = 0; i < dataTableEntity.getRows(); i++) {
                Date date = new Date();
                String uuid1 = dataTableEntity.getData().get(0).getString("uuid");
                String filter="uuid = '"+uuid1+"'";
                DataTableEntity product_oa_conference_apply = baseDao.listTable("product_oa_conference_apply", filter, new Object[]{});
                if(date.before(dataTableEntity.getData().get(0).getDate("start_time"))){
                    product_oa_conference_apply.getData().get(0).setValue("status","未开始");
                }else if(date.after(dataTableEntity.getData().get(0).getDate("end_time"))){
                    product_oa_conference_apply.getData().get(0).setValue("status","已取消");
                }else {
                    product_oa_conference_apply.getData().get(0).setValue("status","会议中");
                }
                baseDao.update(product_oa_conference_apply);
            }
            return  dataTableEntity;
       /* }else {
            return null;
        }*/
    }
    /**
     * 会议室使用情况