Compare commits
No commits in common. 'main' and 'develop' have entirely different histories.
@ -0,0 +1,28 @@
|
|||||||
|
.DS_Store
|
||||||
|
node_modules/
|
||||||
|
dist/
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
**/*.log
|
||||||
|
|
||||||
|
tests/**/coverage/
|
||||||
|
tests/e2e/reports
|
||||||
|
selenium-debug.log
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.local
|
||||||
|
target/
|
||||||
|
# Created by .ignore support plugin (hsz.mobi)
|
||||||
|
*.iml
|
||||||
|
*.iws
|
||||||
|
# out
|
||||||
|
**/out/
|
||||||
|
package-lock.json
|
||||||
|
yarn.lock
|
@ -0,0 +1,73 @@
|
|||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
@ -0,0 +1,12 @@
|
|||||||
|
@echo off
|
||||||
|
echo.
|
||||||
|
echo [信息] 清理工程target生成路径。
|
||||||
|
echo.
|
||||||
|
|
||||||
|
%~d0
|
||||||
|
cd %~dp0
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
call mvn clean
|
||||||
|
|
||||||
|
pause
|
@ -0,0 +1,14 @@
|
|||||||
|
@echo off
|
||||||
|
echo.
|
||||||
|
echo [信息] 使用Jar命令运行Web工程。
|
||||||
|
echo.
|
||||||
|
|
||||||
|
cd %~dp0
|
||||||
|
cd ../ruoyi-admin/target
|
||||||
|
|
||||||
|
set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
|
||||||
|
|
||||||
|
java -jar %JAVA_OPTS% ruoyi-admin.jar
|
||||||
|
|
||||||
|
cd bin
|
||||||
|
pause
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.bs;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 启动程序
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
*/
|
||||||
|
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
|
||||||
|
public class BsApplication
|
||||||
|
{
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
// System.setProperty("spring.devtools.restart.enabled", "false");
|
||||||
|
SpringApplication.run(BsApplication.class, args);
|
||||||
|
System.out.println("(♥◠‿◠)ノ゙ 烟草启动成功 ლ(´ڡ`ლ)゙ ");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.bs;
|
||||||
|
|
||||||
|
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||||
|
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* web容器中进行部署
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
*/
|
||||||
|
public class BsServletInitializer extends SpringBootServletInitializer
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
|
||||||
|
{
|
||||||
|
return application.sources(BsApplication.class);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,95 @@
|
|||||||
|
package com.bs.cm.domain;
|
||||||
|
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附近信息对象 cm_attach
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("cm_attach")
|
||||||
|
@Data
|
||||||
|
public class CmAttach extends BaseEntity{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** 用户id */
|
||||||
|
@TableId(value = "id",type = IdType.AUTO)
|
||||||
|
@ApiModelProperty(value = "用户id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 文件组id */
|
||||||
|
|
||||||
|
@Excel(name = "文件组id")
|
||||||
|
@ApiModelProperty(value = "文件组id")
|
||||||
|
private String fileId;
|
||||||
|
|
||||||
|
/** 文件排序 */
|
||||||
|
|
||||||
|
@Excel(name = "文件排序")
|
||||||
|
@ApiModelProperty(value = "文件排序")
|
||||||
|
private Long fileSort;
|
||||||
|
|
||||||
|
/** 文件名称(编译后) */
|
||||||
|
|
||||||
|
@Excel(name = "文件名称", readConverterExp = "编=译后")
|
||||||
|
@ApiModelProperty(value = "文件名称(编译后)")
|
||||||
|
private String attachName;
|
||||||
|
|
||||||
|
/** 文件类型 */
|
||||||
|
|
||||||
|
@Excel(name = "文件类型")
|
||||||
|
@ApiModelProperty(value = "文件类型")
|
||||||
|
private String attachFileType;
|
||||||
|
|
||||||
|
/** 文件编码类型 */
|
||||||
|
|
||||||
|
@Excel(name = "文件编码类型")
|
||||||
|
@ApiModelProperty(value = "文件编码类型")
|
||||||
|
private String attachContentType;
|
||||||
|
|
||||||
|
/** 文件大小 */
|
||||||
|
|
||||||
|
@Excel(name = "文件大小")
|
||||||
|
@ApiModelProperty(value = "文件大小")
|
||||||
|
private Long attachFileSize;
|
||||||
|
|
||||||
|
/** 文件路径 */
|
||||||
|
|
||||||
|
@Excel(name = "文件路径")
|
||||||
|
@ApiModelProperty(value = "文件路径")
|
||||||
|
private String attachFileUrl;
|
||||||
|
|
||||||
|
/** 文件名(原始) */
|
||||||
|
|
||||||
|
@Excel(name = "文件名", readConverterExp = "原=始")
|
||||||
|
@ApiModelProperty(value = "文件名(原始)")
|
||||||
|
private String oldName;
|
||||||
|
|
||||||
|
/** 文件版本号 */
|
||||||
|
|
||||||
|
@Excel(name = "文件版本号")
|
||||||
|
@ApiModelProperty(value = "文件版本号")
|
||||||
|
private String versionNo;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
|
||||||
|
@Excel(name = "备注")
|
||||||
|
@ApiModelProperty(value = "备注")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.cm.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.cm.domain.CmAttach;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附近信息Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
public interface CmAttachMapper extends BaseMapperX<CmAttach> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.cm.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.cm.domain.CmAttach;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附近信息Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
public interface ICmAttachService extends MPJBaseService<CmAttach>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.cm.service.impl;
|
||||||
|
|
||||||
|
import com.bs.cm.mapper.CmAttachMapper;
|
||||||
|
import com.bs.cm.domain.CmAttach;
|
||||||
|
import com.bs.cm.service.ICmAttachService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 附近信息Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CmAttachServiceImpl extends MPJBaseServiceImpl<CmAttachMapper, CmAttach> implements ICmAttachService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,90 @@
|
|||||||
|
package com.bs.cm.vo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附近信息对象 cm_attach
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-03-04
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CmAttachVO extends BaseEntity{
|
||||||
|
|
||||||
|
/** 用户id */
|
||||||
|
@TableId(value = "id",type = IdType.AUTO)
|
||||||
|
@ApiModelProperty(value = "用户id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 文件组id */
|
||||||
|
|
||||||
|
@Excel(name = "文件组id")
|
||||||
|
@ApiModelProperty(value = "文件组id")
|
||||||
|
private String fileId;
|
||||||
|
|
||||||
|
/** 文件排序 */
|
||||||
|
|
||||||
|
@Excel(name = "文件排序")
|
||||||
|
@ApiModelProperty(value = "文件排序")
|
||||||
|
private Long fileSort;
|
||||||
|
|
||||||
|
/** 文件名称(编译后) */
|
||||||
|
|
||||||
|
@Excel(name = "文件名称", readConverterExp = "编=译后")
|
||||||
|
@ApiModelProperty(value = "文件名称(编译后)")
|
||||||
|
private String attachName;
|
||||||
|
|
||||||
|
/** 文件类型 */
|
||||||
|
|
||||||
|
@Excel(name = "文件类型")
|
||||||
|
@ApiModelProperty(value = "文件类型")
|
||||||
|
private String attachFileType;
|
||||||
|
|
||||||
|
/** 文件编码类型 */
|
||||||
|
|
||||||
|
@Excel(name = "文件编码类型")
|
||||||
|
@ApiModelProperty(value = "文件编码类型")
|
||||||
|
private String attachContentType;
|
||||||
|
|
||||||
|
/** 文件大小 */
|
||||||
|
|
||||||
|
@Excel(name = "文件大小")
|
||||||
|
@ApiModelProperty(value = "文件大小")
|
||||||
|
private Long attachFileSize;
|
||||||
|
|
||||||
|
/** 文件路径 */
|
||||||
|
|
||||||
|
@Excel(name = "文件路径")
|
||||||
|
@ApiModelProperty(value = "文件路径")
|
||||||
|
private String attachFileUrl;
|
||||||
|
|
||||||
|
/** 文件名(原始) */
|
||||||
|
|
||||||
|
@Excel(name = "文件名", readConverterExp = "原=始")
|
||||||
|
@ApiModelProperty(value = "文件名(原始)")
|
||||||
|
private String oldName;
|
||||||
|
|
||||||
|
/** 文件版本号 */
|
||||||
|
|
||||||
|
@Excel(name = "文件版本号")
|
||||||
|
@ApiModelProperty(value = "文件版本号")
|
||||||
|
private String versionNo;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
|
||||||
|
@Excel(name = "备注")
|
||||||
|
@ApiModelProperty(value = "备注")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
private String angle;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,166 @@
|
|||||||
|
package com.bs.ct.controller;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import com.bs.ct.service.ICtGalleryImagesService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import com.bs.common.annotation.Log;
|
||||||
|
import com.bs.common.core.controller.BaseController;
|
||||||
|
import com.bs.common.core.domain.AjaxResult;
|
||||||
|
import com.bs.common.core.page.TableDataInfo;
|
||||||
|
import com.bs.common.enums.BusinessType;
|
||||||
|
import com.bs.common.utils.poi.ExcelUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import com.bs.ct.domain.CtImagesFeedbackRef;
|
||||||
|
import com.bs.ct.service.ICtImagesFeedbackRefService;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片任务反馈关联Controller
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-04-20
|
||||||
|
*/
|
||||||
|
@Api(tags = "图片任务反馈关联")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/images/ref")
|
||||||
|
public class CtImagesFeedbackRefController extends BaseController {
|
||||||
|
@Resource
|
||||||
|
private ICtImagesFeedbackRefService ctImagesFeedbackRefService;
|
||||||
|
@Resource
|
||||||
|
private ICtGalleryImagesService ctGalleryImagesService;
|
||||||
|
/**
|
||||||
|
* 分页查询图片任务反馈关联列表
|
||||||
|
*/
|
||||||
|
@ApiOperation("分页查询图片任务反馈关联列表")
|
||||||
|
@GetMapping("/pageList")
|
||||||
|
public TableDataInfo pageList(CtImagesFeedbackRef ctImagesFeedbackRef) {
|
||||||
|
startPage();
|
||||||
|
LambdaQueryWrapper<CtImagesFeedbackRef> queryWrapper = new LambdaQueryWrapper();
|
||||||
|
condition(queryWrapper,ctImagesFeedbackRef);
|
||||||
|
List<CtImagesFeedbackRef> list = ctImagesFeedbackRefService.list(queryWrapper);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询图片任务反馈关联列表
|
||||||
|
*/
|
||||||
|
@ApiOperation("查询图片任务反馈关联列表")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public AjaxResult list(CtImagesFeedbackRef ctImagesFeedbackRef) {
|
||||||
|
LambdaQueryWrapper<CtImagesFeedbackRef> queryWrapper = new LambdaQueryWrapper();
|
||||||
|
condition(queryWrapper,ctImagesFeedbackRef);
|
||||||
|
List<CtImagesFeedbackRef> list = ctImagesFeedbackRefService.list(queryWrapper);
|
||||||
|
return success(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出图片任务反馈关联列表
|
||||||
|
*/
|
||||||
|
@ApiOperation("导出图片任务反馈关联列表")
|
||||||
|
@Log(title = "图片任务反馈关联导出", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(HttpServletResponse response, CtImagesFeedbackRef ctImagesFeedbackRef) {
|
||||||
|
LambdaQueryWrapper<CtImagesFeedbackRef> queryWrapper = new LambdaQueryWrapper();
|
||||||
|
condition(queryWrapper,ctImagesFeedbackRef);
|
||||||
|
List<CtImagesFeedbackRef> list = ctImagesFeedbackRefService.list(queryWrapper);
|
||||||
|
ExcelUtil<CtImagesFeedbackRef> util = new ExcelUtil<CtImagesFeedbackRef>(CtImagesFeedbackRef. class);
|
||||||
|
util.exportExcel(response, list, "图片任务反馈关联数据");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取图片任务反馈关联详细信息
|
||||||
|
*/
|
||||||
|
@ApiOperation("获取图片任务反馈关联详细信息")
|
||||||
|
@GetMapping(value = "/{imageId}")
|
||||||
|
public AjaxResult getInfo(@PathVariable("imageId") Long imageId) {
|
||||||
|
return success(ctImagesFeedbackRefService.getById(imageId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增图片任务反馈关联
|
||||||
|
*/
|
||||||
|
@ApiOperation("新增图片任务反馈关联")
|
||||||
|
@Log(title = "图片任务反馈关联新增", businessType = BusinessType.INSERT)
|
||||||
|
@PostMapping
|
||||||
|
public AjaxResult add(@RequestBody CtImagesFeedbackRef ctImagesFeedbackRef) {
|
||||||
|
return toAjax(ctImagesFeedbackRefService.save(ctImagesFeedbackRef));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改图片任务反馈关联
|
||||||
|
*/
|
||||||
|
@ApiOperation("修改图片任务反馈关联")
|
||||||
|
@Log(title = "图片任务反馈关联修改", businessType = BusinessType.UPDATE)
|
||||||
|
@PutMapping
|
||||||
|
public AjaxResult edit(@RequestBody CtImagesFeedbackRef ctImagesFeedbackRef) {
|
||||||
|
return toAjax(ctImagesFeedbackRefService.updateById(ctImagesFeedbackRef));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除图片任务反馈关联
|
||||||
|
*/
|
||||||
|
@ApiOperation("删除图片任务反馈关联")
|
||||||
|
@Log(title = "图片任务反馈关联删除", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{imageIds}")
|
||||||
|
public AjaxResult remove(@PathVariable List<Long> imageIds) {
|
||||||
|
return toAjax(ctImagesFeedbackRefService.removeBatchByIds(imageIds));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 条件设置
|
||||||
|
*/
|
||||||
|
private void condition (LambdaQueryWrapper<CtImagesFeedbackRef> queryWrapper,CtImagesFeedbackRef ctImagesFeedbackRef){
|
||||||
|
|
||||||
|
|
||||||
|
//图片id
|
||||||
|
if(null != (ctImagesFeedbackRef.getImageId())){
|
||||||
|
queryWrapper.eq(CtImagesFeedbackRef::getImageId,ctImagesFeedbackRef.getImageId());
|
||||||
|
}
|
||||||
|
|
||||||
|
//任务反馈id
|
||||||
|
if(null != (ctImagesFeedbackRef.getFeedbackId())){
|
||||||
|
queryWrapper.eq(CtImagesFeedbackRef::getFeedbackId,ctImagesFeedbackRef.getFeedbackId());
|
||||||
|
}
|
||||||
|
|
||||||
|
//创建人
|
||||||
|
if(null != (ctImagesFeedbackRef.getCreateBy())){
|
||||||
|
queryWrapper.eq(CtImagesFeedbackRef::getCreateBy,ctImagesFeedbackRef.getCreateBy());
|
||||||
|
}
|
||||||
|
|
||||||
|
//创建时间
|
||||||
|
if(null != (ctImagesFeedbackRef.getCreateTime())){
|
||||||
|
queryWrapper.eq(CtImagesFeedbackRef::getCreateTime,ctImagesFeedbackRef.getCreateTime());
|
||||||
|
}
|
||||||
|
|
||||||
|
//修改人
|
||||||
|
if(null != (ctImagesFeedbackRef.getUpdateBy())){
|
||||||
|
queryWrapper.eq(CtImagesFeedbackRef::getUpdateBy,ctImagesFeedbackRef.getUpdateBy());
|
||||||
|
}
|
||||||
|
|
||||||
|
//修改时间
|
||||||
|
if(null != (ctImagesFeedbackRef.getUpdateTime())){
|
||||||
|
queryWrapper.eq(CtImagesFeedbackRef::getUpdateTime,ctImagesFeedbackRef.getUpdateTime());
|
||||||
|
}
|
||||||
|
|
||||||
|
//租户ID
|
||||||
|
if(StringUtils.isNotEmpty(ctImagesFeedbackRef.getTenantId())){
|
||||||
|
queryWrapper.eq(CtImagesFeedbackRef::getTenantId,ctImagesFeedbackRef.getTenantId());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
package com.bs.ct.domain;
|
||||||
|
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图库目录对象 ct_gallery_cata
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("ct_gallery_cata")
|
||||||
|
@Data
|
||||||
|
public class CtGalleryCata extends BaseEntity{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** id */
|
||||||
|
@TableId(value = "id",type = IdType.AUTO)
|
||||||
|
@ApiModelProperty(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 目录名称 */
|
||||||
|
|
||||||
|
@Excel(name = "目录名称")
|
||||||
|
@ApiModelProperty(value = "目录名称")
|
||||||
|
private String cataName;
|
||||||
|
|
||||||
|
/** 父级id */
|
||||||
|
|
||||||
|
@Excel(name = "父级id")
|
||||||
|
@ApiModelProperty(value = "父级id")
|
||||||
|
private Long parentId;
|
||||||
|
|
||||||
|
/** 类型 */
|
||||||
|
|
||||||
|
@Excel(name = "类型")
|
||||||
|
@ApiModelProperty(value = "类型")
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
|
||||||
|
@Excel(name = "备注")
|
||||||
|
@ApiModelProperty(value = "备注")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<CtGalleryCata> children;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,94 @@
|
|||||||
|
package com.bs.ct.domain;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图库目录共享对象 ct_gallery_cata_share
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("ct_gallery_cata_share")
|
||||||
|
@Data
|
||||||
|
public class CtGalleryCataShare extends BaseEntity{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** id */
|
||||||
|
@TableId(value = "id",type = IdType.AUTO)
|
||||||
|
@ApiModelProperty(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 共享类型目录共享、图片共享 */
|
||||||
|
|
||||||
|
@Excel(name = "共享类型目录共享、图片共享")
|
||||||
|
@ApiModelProperty(value = "共享类型目录共享、图片共享")
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
/** 目录id */
|
||||||
|
|
||||||
|
@Excel(name = "目录id")
|
||||||
|
@ApiModelProperty(value = "目录id")
|
||||||
|
private Long cataId;
|
||||||
|
|
||||||
|
@Excel(name = "共享名称")
|
||||||
|
@ApiModelProperty(value = "共享名称")
|
||||||
|
private String cataName;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<Long> cataIds;
|
||||||
|
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String userType;
|
||||||
|
|
||||||
|
/** 共享用户 */
|
||||||
|
|
||||||
|
@Excel(name = "共享用户")
|
||||||
|
@ApiModelProperty(value = "共享用户")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<Long> userIds;
|
||||||
|
|
||||||
|
/** 开始时间 */
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
|
@ApiModelProperty(value = "开始时间")
|
||||||
|
private Date beginDate;
|
||||||
|
|
||||||
|
/** 结束时间 */
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
|
@ApiModelProperty(value = "结束时间")
|
||||||
|
private Date endDate;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
|
||||||
|
@Excel(name = "备注")
|
||||||
|
@ApiModelProperty(value = "备注")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<CtGalleryShareUser> lsUsers;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String queryType;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,89 @@
|
|||||||
|
package com.bs.ct.domain;
|
||||||
|
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图库图片标签对象 ct_gallery_images_tag
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("ct_gallery_images_tag")
|
||||||
|
@Data
|
||||||
|
public class CtGalleryImagesTag extends BaseEntity{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** id */
|
||||||
|
@TableId(value = "id",type = IdType.AUTO)
|
||||||
|
@ApiModelProperty(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 图片id */
|
||||||
|
|
||||||
|
@Excel(name = "图片id")
|
||||||
|
@ApiModelProperty(value = "图片id")
|
||||||
|
private Long imageId;
|
||||||
|
|
||||||
|
|
||||||
|
@Excel(name = "标签类型")
|
||||||
|
@ApiModelProperty(value = "标签类型")
|
||||||
|
private String tagType;
|
||||||
|
|
||||||
|
|
||||||
|
/** 标签名称 */
|
||||||
|
|
||||||
|
@Excel(name = "标签名称")
|
||||||
|
@ApiModelProperty(value = "标签名称")
|
||||||
|
private String tagName;
|
||||||
|
|
||||||
|
/** 标签说明 */
|
||||||
|
|
||||||
|
@Excel(name = "标签说明")
|
||||||
|
@ApiModelProperty(value = "标签说明")
|
||||||
|
private String tagDesc;
|
||||||
|
|
||||||
|
/** 是否需要拍照 */
|
||||||
|
|
||||||
|
@Excel(name = "是否需要拍照")
|
||||||
|
@ApiModelProperty(value = "是否需要拍照")
|
||||||
|
private String isPhoto;
|
||||||
|
|
||||||
|
/** 拍照数量要求 */
|
||||||
|
|
||||||
|
@Excel(name = "拍照数量要求")
|
||||||
|
@ApiModelProperty(value = "拍照数量要求")
|
||||||
|
private Long photoNum;
|
||||||
|
|
||||||
|
/** 照片存放目录 */
|
||||||
|
|
||||||
|
@Excel(name = "照片存放目录")
|
||||||
|
@ApiModelProperty(value = "照片存放目录")
|
||||||
|
private Long saveDir;
|
||||||
|
|
||||||
|
/** 附件id */
|
||||||
|
|
||||||
|
@Excel(name = "附件id")
|
||||||
|
@ApiModelProperty(value = "附件id")
|
||||||
|
private Long fileId;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
|
||||||
|
@Excel(name = "备注")
|
||||||
|
@ApiModelProperty(value = "备注")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,73 @@
|
|||||||
|
package com.bs.ct.domain;
|
||||||
|
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import com.bs.common.core.domain.entity.SysDept;
|
||||||
|
import com.bs.common.core.domain.entity.SysUser;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图库目录共享用户对象 ct_gallery_share_user
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-06-14
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("ct_gallery_share_user")
|
||||||
|
@Data
|
||||||
|
public class CtGalleryShareUser extends BaseEntity{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** id */
|
||||||
|
@TableId(value = "id",type = IdType.AUTO)
|
||||||
|
@ApiModelProperty(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 共享id */
|
||||||
|
|
||||||
|
@Excel(name = "共享id")
|
||||||
|
@ApiModelProperty(value = "共享id")
|
||||||
|
private Long shareId;
|
||||||
|
|
||||||
|
@Excel(name = "用户类型")
|
||||||
|
@ApiModelProperty(value = "用户类型")
|
||||||
|
private String userType;
|
||||||
|
|
||||||
|
/** 共享用户 */
|
||||||
|
|
||||||
|
@Excel(name = "共享用户")
|
||||||
|
@ApiModelProperty(value = "共享用户")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
|
||||||
|
/** 开始时间 */
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
|
@ApiModelProperty(value = "开始时间")
|
||||||
|
private Date beginDate;
|
||||||
|
|
||||||
|
/** 结束时间 */
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
|
@ApiModelProperty(value = "结束时间")
|
||||||
|
private Date endDate;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private SysDept dept;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private SysUser user;
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
package com.bs.ct.domain;
|
||||||
|
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片任务反馈关联对象 ct_images_feedback_ref
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-04-20
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("ct_images_feedback_ref")
|
||||||
|
@Data
|
||||||
|
public class CtImagesFeedbackRef extends BaseEntity{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** 图片id */
|
||||||
|
|
||||||
|
@Excel(name = "图片id")
|
||||||
|
@ApiModelProperty(value = "图片id")
|
||||||
|
private Long imageId;
|
||||||
|
|
||||||
|
/** 任务反馈id */
|
||||||
|
|
||||||
|
@Excel(name = "任务反馈id")
|
||||||
|
@ApiModelProperty(value = "任务反馈id")
|
||||||
|
private Long feedbackId;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,89 @@
|
|||||||
|
package com.bs.ct.domain;
|
||||||
|
|
||||||
|
import com.bs.cm.domain.CmAttach;
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标签信息对象 ct_tag
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("ct_tag")
|
||||||
|
@Data
|
||||||
|
public class CtTag extends BaseEntity{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** id */
|
||||||
|
@TableId(value = "id",type = IdType.AUTO)
|
||||||
|
@ApiModelProperty(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
|
||||||
|
@Excel(name = "标签类型")
|
||||||
|
@ApiModelProperty(value = "标签类型")
|
||||||
|
private String tagType;
|
||||||
|
|
||||||
|
/** 标签名称 */
|
||||||
|
|
||||||
|
@Excel(name = "标签名称")
|
||||||
|
@ApiModelProperty(value = "标签名称")
|
||||||
|
private String tagName;
|
||||||
|
|
||||||
|
/** 标签说明 */
|
||||||
|
|
||||||
|
@Excel(name = "标签说明")
|
||||||
|
@ApiModelProperty(value = "标签说明")
|
||||||
|
private String tagDesc;
|
||||||
|
|
||||||
|
/** 是否需要拍照 */
|
||||||
|
|
||||||
|
@Excel(name = "是否需要拍照")
|
||||||
|
@ApiModelProperty(value = "是否需要拍照")
|
||||||
|
private String isPhoto;
|
||||||
|
|
||||||
|
/** 拍照数量要求 */
|
||||||
|
|
||||||
|
@Excel(name = "拍照数量要求")
|
||||||
|
@ApiModelProperty(value = "拍照数量要求")
|
||||||
|
private Long photoNum;
|
||||||
|
|
||||||
|
/** 照片存放目录 */
|
||||||
|
|
||||||
|
@Excel(name = "照片存放目录")
|
||||||
|
@ApiModelProperty(value = "照片存放目录")
|
||||||
|
private Long saveDir;
|
||||||
|
|
||||||
|
/** 附件id */
|
||||||
|
|
||||||
|
@Excel(name = "附件id")
|
||||||
|
@ApiModelProperty(value = "附件id")
|
||||||
|
private Long fileId;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
|
||||||
|
@Excel(name = "备注")
|
||||||
|
@ApiModelProperty(value = "备注")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
/** 附件id */
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "附件")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<CmAttach> files;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,172 @@
|
|||||||
|
package com.bs.ct.domain;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.bs.cm.domain.CmAttach;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务反馈对象 ct_task_feedback
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("ct_task_feedback")
|
||||||
|
@Data
|
||||||
|
public class CtTaskFeedback extends BaseEntity{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** id */
|
||||||
|
@TableId(value = "id",type = IdType.AUTO)
|
||||||
|
@ApiModelProperty(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 任务id */
|
||||||
|
|
||||||
|
@Excel(name = "任务id")
|
||||||
|
@ApiModelProperty(value = "任务id")
|
||||||
|
private Long taskId;
|
||||||
|
|
||||||
|
/** 任务标签id */
|
||||||
|
|
||||||
|
@Excel(name = "任务标签id")
|
||||||
|
@ApiModelProperty(value = "任务标签id")
|
||||||
|
private Long taskTagId;
|
||||||
|
|
||||||
|
/** 任务id */
|
||||||
|
|
||||||
|
@Excel(name = "任务id")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<Long> taskIds;
|
||||||
|
|
||||||
|
/** 图片id */
|
||||||
|
|
||||||
|
@Excel(name = "图片id")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<Long> imageIds;
|
||||||
|
|
||||||
|
/** 机构任务id */
|
||||||
|
|
||||||
|
@Excel(name = "机构任务id")
|
||||||
|
@ApiModelProperty(value = "机构任务id")
|
||||||
|
private Long taskBranchId;
|
||||||
|
|
||||||
|
/** 机构代码 */
|
||||||
|
|
||||||
|
@Excel(name = "机构代码")
|
||||||
|
@ApiModelProperty(value = "机构代码")
|
||||||
|
private String branchCode;
|
||||||
|
|
||||||
|
/** 任务反馈时间 */
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@Excel(name = "任务反馈时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
|
@ApiModelProperty(value = "任务反馈时间")
|
||||||
|
private Date feedbackTime;
|
||||||
|
|
||||||
|
/** 任务完成情况 */
|
||||||
|
|
||||||
|
@Excel(name = "任务完成情况")
|
||||||
|
@ApiModelProperty(value = "任务完成情况")
|
||||||
|
private String taskDesc;
|
||||||
|
|
||||||
|
/** 操作人员工号 */
|
||||||
|
|
||||||
|
@Excel(name = "操作人员工号")
|
||||||
|
@ApiModelProperty(value = "操作人员工号")
|
||||||
|
private String userId;
|
||||||
|
|
||||||
|
/** 人员ids */
|
||||||
|
|
||||||
|
@Excel(name = "人员ids")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<String> userIds;
|
||||||
|
|
||||||
|
/** 操作人员姓名 */
|
||||||
|
|
||||||
|
@Excel(name = "操作人员姓名")
|
||||||
|
@ApiModelProperty(value = "操作人员姓名")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
/** 操作人员部门 */
|
||||||
|
|
||||||
|
@Excel(name = "操作人员部门")
|
||||||
|
@ApiModelProperty(value = "操作人员部门")
|
||||||
|
private String userDept;
|
||||||
|
|
||||||
|
/** 是否已拍照留存 */
|
||||||
|
|
||||||
|
@Excel(name = "是否已拍照留存")
|
||||||
|
@ApiModelProperty(value = "是否已拍照留存")
|
||||||
|
private String isPhoto;
|
||||||
|
|
||||||
|
/** 附件id */
|
||||||
|
|
||||||
|
@Excel(name = "附件id")
|
||||||
|
@ApiModelProperty(value = "附件id")
|
||||||
|
private Long fileId;
|
||||||
|
|
||||||
|
/** 审核人员id */
|
||||||
|
|
||||||
|
@Excel(name = "审核人员id")
|
||||||
|
@ApiModelProperty(value = "审核人员id")
|
||||||
|
private String checkUserId;
|
||||||
|
|
||||||
|
/** 审核人员姓名 */
|
||||||
|
|
||||||
|
@Excel(name = "审核人员姓名")
|
||||||
|
@ApiModelProperty(value = "审核人员姓名")
|
||||||
|
private String checkUserName;
|
||||||
|
|
||||||
|
/** 审核人员部门 */
|
||||||
|
|
||||||
|
@Excel(name = "审核人员部门")
|
||||||
|
@ApiModelProperty(value = "审核人员部门")
|
||||||
|
private String checkUserDept;
|
||||||
|
|
||||||
|
/** 审核时间 */
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
|
@ApiModelProperty(value = "审核时间")
|
||||||
|
private Date checkDate;
|
||||||
|
|
||||||
|
/** 审核状态 */
|
||||||
|
|
||||||
|
@Excel(name = "审核状态")
|
||||||
|
@ApiModelProperty(value = "审核状态")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/** 审核信息 */
|
||||||
|
|
||||||
|
@Excel(name = "审核信息")
|
||||||
|
@ApiModelProperty(value = "审核信息")
|
||||||
|
private String checkInfo;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
|
||||||
|
@Excel(name = "备注")
|
||||||
|
@ApiModelProperty(value = "备注")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
|
||||||
|
/** 附件id */
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "附件")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<CmAttach> file;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
package com.bs.ct.domain;
|
||||||
|
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务图片信息对象 ct_task_images
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("ct_task_images")
|
||||||
|
@Data
|
||||||
|
public class CtTaskImages extends BaseEntity{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** id */
|
||||||
|
@TableId(value = "id",type = IdType.AUTO)
|
||||||
|
@ApiModelProperty(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 任务id */
|
||||||
|
|
||||||
|
@Excel(name = "任务id")
|
||||||
|
@ApiModelProperty(value = "任务id")
|
||||||
|
private Long taskId;
|
||||||
|
|
||||||
|
/** 图片id */
|
||||||
|
|
||||||
|
@Excel(name = "图片id")
|
||||||
|
@ApiModelProperty(value = "图片id")
|
||||||
|
private Long imageId;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
|
||||||
|
@Excel(name = "备注")
|
||||||
|
@ApiModelProperty(value = "备注")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,185 @@
|
|||||||
|
package com.bs.ct.domain;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import com.bs.cm.domain.CmAttach;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务信息对象 ct_task_info
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("ct_task_info")
|
||||||
|
@Data
|
||||||
|
public class CtTaskInfo extends BaseEntity{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** id */
|
||||||
|
@TableId(value = "id",type = IdType.AUTO)
|
||||||
|
@ApiModelProperty(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 任务类型 */
|
||||||
|
|
||||||
|
@Excel(name = "任务类型")
|
||||||
|
@ApiModelProperty(value = "任务类型")
|
||||||
|
private String taskType;
|
||||||
|
|
||||||
|
/** 任务标题 */
|
||||||
|
|
||||||
|
@Excel(name = "任务标题")
|
||||||
|
@ApiModelProperty(value = "任务标题")
|
||||||
|
private String taskTitle;
|
||||||
|
|
||||||
|
/** 任务编号 */
|
||||||
|
|
||||||
|
@Excel(name = "任务编号")
|
||||||
|
@ApiModelProperty(value = "任务编号")
|
||||||
|
private String taskCode;
|
||||||
|
|
||||||
|
/** 开始时间 */
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
|
@ApiModelProperty(value = "开始时间")
|
||||||
|
private Date startDate;
|
||||||
|
|
||||||
|
/** 结束时间 */
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
|
@ApiModelProperty(value = "结束时间")
|
||||||
|
private Date endDate;
|
||||||
|
|
||||||
|
//@Excel(name = "任务要求")
|
||||||
|
@ApiModelProperty(value = "任务期限")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String startToEndDate;
|
||||||
|
|
||||||
|
/** 任务要求 */
|
||||||
|
|
||||||
|
@Excel(name = "任务内容")
|
||||||
|
@ApiModelProperty(value = "任务内容")
|
||||||
|
private String taskContent;
|
||||||
|
|
||||||
|
/** 完成状态 */
|
||||||
|
|
||||||
|
@Excel(name = "完成状态")
|
||||||
|
@ApiModelProperty(value = "完成状态")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/** 附件id */
|
||||||
|
|
||||||
|
@Excel(name = "附件id")
|
||||||
|
@ApiModelProperty(value = "附件id")
|
||||||
|
private Long fileId;
|
||||||
|
|
||||||
|
/** 附件id */
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "附件")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<CmAttach> file;
|
||||||
|
|
||||||
|
/** 任务发起人 */
|
||||||
|
|
||||||
|
@Excel(name = "任务发起人")
|
||||||
|
@ApiModelProperty(value = "任务发起人")
|
||||||
|
private String taskInitiator;
|
||||||
|
|
||||||
|
/** 任务发起单位机构代码 */
|
||||||
|
|
||||||
|
@Excel(name = "任务发起单位机构代码")
|
||||||
|
@ApiModelProperty(value = "任务发起单位机构代码")
|
||||||
|
private String branchCode;
|
||||||
|
|
||||||
|
/** 任务发起单位 */
|
||||||
|
|
||||||
|
@Excel(name = "任务发起单位")
|
||||||
|
@ApiModelProperty(value = "任务发起单位")
|
||||||
|
private String branchName;
|
||||||
|
|
||||||
|
/** 任务发起部门 */
|
||||||
|
|
||||||
|
//@Excel(name = "任务发起部门")
|
||||||
|
@ApiModelProperty(value = "任务发起部门")
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
|
/** 任务发起部门 */
|
||||||
|
|
||||||
|
@Excel(name = "任务发起部门")
|
||||||
|
@ApiModelProperty(value = "任务发起部门")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String deptName;
|
||||||
|
|
||||||
|
/** 任务发布日期 */
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@Excel(name = "任务发布日期", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
|
@ApiModelProperty(value = "任务发布日期")
|
||||||
|
@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||||
|
private Date taskDate;
|
||||||
|
|
||||||
|
@Excel(name = "办理单位")
|
||||||
|
@ApiModelProperty(value = "办理单位")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String transactBranchName;
|
||||||
|
|
||||||
|
@Excel(name = "办理部门")
|
||||||
|
@ApiModelProperty(value = "办理部门")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String transactDeptName;
|
||||||
|
|
||||||
|
@Excel(name = "办理人")
|
||||||
|
@ApiModelProperty(value = "办理人")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String transactInitiator;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
|
||||||
|
@Excel(name = "备注")
|
||||||
|
@ApiModelProperty(value = "备注")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<CtTaskBranch> branchList;
|
||||||
|
|
||||||
|
@Excel(name = "任务状态")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String taskStatus;
|
||||||
|
|
||||||
|
@Excel(name = "办理人Id")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<String> userIds;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Integer pageNum;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Integer pageSize;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private CtTaskFeedback sdTaskOtherFeedbackByCreate;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private CtTaskFeedback sdTaskOtherFeedbackByFeedback;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<CtTaskTag> tags;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private Date queryDate;
|
||||||
|
}
|
@ -0,0 +1,92 @@
|
|||||||
|
package com.bs.ct.domain;
|
||||||
|
|
||||||
|
import com.bs.cm.domain.CmAttach;
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务标签对象 ct_task_tag
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("ct_task_tag")
|
||||||
|
@Data
|
||||||
|
public class CtTaskTag extends BaseEntity{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** id */
|
||||||
|
@TableId(value = "id",type = IdType.AUTO)
|
||||||
|
@ApiModelProperty(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 任务模板id */
|
||||||
|
|
||||||
|
@Excel(name = "任务模板id")
|
||||||
|
@ApiModelProperty(value = "任务模板id")
|
||||||
|
private Long taskId;
|
||||||
|
|
||||||
|
|
||||||
|
@Excel(name = "标签类型")
|
||||||
|
@ApiModelProperty(value = "标签类型")
|
||||||
|
private String tagType;
|
||||||
|
|
||||||
|
/** 标签名称 */
|
||||||
|
|
||||||
|
@Excel(name = "标签名称")
|
||||||
|
@ApiModelProperty(value = "标签名称")
|
||||||
|
private String tagName;
|
||||||
|
|
||||||
|
/** 标签说明 */
|
||||||
|
|
||||||
|
@Excel(name = "标签说明")
|
||||||
|
@ApiModelProperty(value = "标签说明")
|
||||||
|
private String tagDesc;
|
||||||
|
|
||||||
|
/** 是否需要拍照 */
|
||||||
|
|
||||||
|
@Excel(name = "是否需要拍照")
|
||||||
|
@ApiModelProperty(value = "是否需要拍照")
|
||||||
|
private String isPhoto;
|
||||||
|
|
||||||
|
/** 拍照数量要求 */
|
||||||
|
|
||||||
|
@Excel(name = "拍照数量要求")
|
||||||
|
@ApiModelProperty(value = "拍照数量要求")
|
||||||
|
private Long photoNum;
|
||||||
|
|
||||||
|
/** 照片存放目录 */
|
||||||
|
|
||||||
|
@Excel(name = "照片存放目录")
|
||||||
|
@ApiModelProperty(value = "照片存放目录")
|
||||||
|
private Long saveDir;
|
||||||
|
|
||||||
|
/** 附件id */
|
||||||
|
|
||||||
|
@Excel(name = "附件id")
|
||||||
|
@ApiModelProperty(value = "附件id")
|
||||||
|
private Long fileId;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
|
||||||
|
@Excel(name = "备注")
|
||||||
|
@ApiModelProperty(value = "备注")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<CtTaskFeedback> ctTaskFeedbacks;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,126 @@
|
|||||||
|
package com.bs.ct.domain;
|
||||||
|
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务模板对象 ct_task_template
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("ct_task_template")
|
||||||
|
@Data
|
||||||
|
public class CtTaskTemplate extends BaseEntity{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** id */
|
||||||
|
@TableId(value = "id",type = IdType.AUTO)
|
||||||
|
@ApiModelProperty(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 任务类型 */
|
||||||
|
|
||||||
|
@Excel(name = "任务类型")
|
||||||
|
@ApiModelProperty(value = "任务类型")
|
||||||
|
private String taskType;
|
||||||
|
|
||||||
|
/** 模板名称 */
|
||||||
|
|
||||||
|
@Excel(name = "模板名称")
|
||||||
|
@ApiModelProperty(value = "模板名称")
|
||||||
|
private String templateName;
|
||||||
|
|
||||||
|
/** 任务标题 */
|
||||||
|
|
||||||
|
@Excel(name = "任务标题")
|
||||||
|
@ApiModelProperty(value = "任务标题")
|
||||||
|
private String taskTitle;
|
||||||
|
|
||||||
|
/** 任务要求 */
|
||||||
|
|
||||||
|
@Excel(name = "任务要求")
|
||||||
|
@ApiModelProperty(value = "任务要求")
|
||||||
|
private String taskContent;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
|
||||||
|
@Excel(name = "备注")
|
||||||
|
@ApiModelProperty(value = "备注")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
/** 创建人 */
|
||||||
|
|
||||||
|
@Excel(name = "创建人")
|
||||||
|
@ApiModelProperty(value = "创建人")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String createByUserName;
|
||||||
|
|
||||||
|
/** 创建部门 */
|
||||||
|
|
||||||
|
@Excel(name = "创建部门")
|
||||||
|
@ApiModelProperty(value = "创建部门")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String createByDeptName;
|
||||||
|
|
||||||
|
/** 创建单位 */
|
||||||
|
|
||||||
|
@Excel(name = "创建单位")
|
||||||
|
@ApiModelProperty(value = "创建单位")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String createByBranch;
|
||||||
|
|
||||||
|
/** 任务标签 */
|
||||||
|
|
||||||
|
@Excel(name = "任务标签id")
|
||||||
|
@ApiModelProperty(value = "任务标签id")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<String> tagIds;
|
||||||
|
|
||||||
|
/** 任务标签 */
|
||||||
|
|
||||||
|
@Excel(name = "任务标签")
|
||||||
|
@ApiModelProperty(value = "任务标签")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<CtTaskTemplateTag> tags;
|
||||||
|
|
||||||
|
|
||||||
|
/** 任务标签 */
|
||||||
|
|
||||||
|
@Excel(name = "任务标签")
|
||||||
|
@ApiModelProperty(value = "任务标签")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String tagNames;
|
||||||
|
|
||||||
|
@Excel(name = "创建时间")
|
||||||
|
@ApiModelProperty(value = "创建时间")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String createTimeVo;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Integer pageNum;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Integer pageSize;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Date startCreateTime;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Date endCreateTime;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,97 @@
|
|||||||
|
package com.bs.ct.domain;
|
||||||
|
|
||||||
|
import com.bs.cm.domain.CmAttach;
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务模板标签对象 ct_task_template_tag
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("ct_task_template_tag")
|
||||||
|
@Data
|
||||||
|
public class CtTaskTemplateTag extends BaseEntity{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** id */
|
||||||
|
@TableId(value = "id",type = IdType.AUTO)
|
||||||
|
@ApiModelProperty(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 任务模板id */
|
||||||
|
|
||||||
|
@Excel(name = "任务模板id")
|
||||||
|
@ApiModelProperty(value = "任务模板id")
|
||||||
|
private Long templateId;
|
||||||
|
|
||||||
|
|
||||||
|
@Excel(name = "标签类型")
|
||||||
|
@ApiModelProperty(value = "标签类型")
|
||||||
|
private String tagType;
|
||||||
|
|
||||||
|
|
||||||
|
/** 标签名称 */
|
||||||
|
|
||||||
|
@Excel(name = "标签名称")
|
||||||
|
@ApiModelProperty(value = "标签名称")
|
||||||
|
private String tagName;
|
||||||
|
|
||||||
|
/** 标签说明 */
|
||||||
|
|
||||||
|
@Excel(name = "标签说明")
|
||||||
|
@ApiModelProperty(value = "标签说明")
|
||||||
|
private String tagDesc;
|
||||||
|
|
||||||
|
/** 是否需要拍照 */
|
||||||
|
|
||||||
|
@Excel(name = "是否需要拍照")
|
||||||
|
@ApiModelProperty(value = "是否需要拍照")
|
||||||
|
private String isPhoto;
|
||||||
|
|
||||||
|
/** 拍照数量要求 */
|
||||||
|
|
||||||
|
@Excel(name = "拍照数量要求")
|
||||||
|
@ApiModelProperty(value = "拍照数量要求")
|
||||||
|
private Long photoNum;
|
||||||
|
|
||||||
|
/** 照片存放目录 */
|
||||||
|
|
||||||
|
@Excel(name = "照片存放目录")
|
||||||
|
@ApiModelProperty(value = "照片存放目录")
|
||||||
|
private Long saveDir;
|
||||||
|
|
||||||
|
/** 附件id */
|
||||||
|
|
||||||
|
@Excel(name = "附件id")
|
||||||
|
@ApiModelProperty(value = "附件id")
|
||||||
|
private Long fileId;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
|
||||||
|
@Excel(name = "备注")
|
||||||
|
@ApiModelProperty(value = "备注")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
|
||||||
|
/** 附件id */
|
||||||
|
|
||||||
|
@Excel(name = "附件")
|
||||||
|
@ApiModelProperty(value = "附件")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<CmAttach> files;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.ct.domain.CtGalleryCata;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图库目录Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface CtGalleryCataMapper extends BaseMapperX<CtGalleryCata> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.ct.domain.CtGalleryCataShare;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图库目录共享Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface CtGalleryCataShareMapper extends BaseMapperX<CtGalleryCataShare> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.ct.domain.CtGalleryImages;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图库图片Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface CtGalleryImagesMapper extends BaseMapperX<CtGalleryImages> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.ct.domain.CtGalleryImagesTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图库图片标签Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface CtGalleryImagesTagMapper extends BaseMapperX<CtGalleryImagesTag> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.ct.domain.CtGalleryShareUser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图库目录共享用户Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-06-14
|
||||||
|
*/
|
||||||
|
public interface CtGalleryShareUserMapper extends BaseMapperX<CtGalleryShareUser> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.ct.domain.CtImagesFeedbackRef;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片任务反馈关联Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-04-20
|
||||||
|
*/
|
||||||
|
public interface CtImagesFeedbackRefMapper extends BaseMapperX<CtImagesFeedbackRef> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.ct.domain.CtTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标签信息Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface CtTagMapper extends BaseMapperX<CtTag> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.ct.domain.CtTaskBranch;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务机构信息Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface CtTaskBranchMapper extends BaseMapperX<CtTaskBranch> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.ct.domain.CtTaskFeedback;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务反馈Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface CtTaskFeedbackMapper extends BaseMapperX<CtTaskFeedback> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.ct.domain.CtTaskImages;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务图片信息Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface CtTaskImagesMapper extends BaseMapperX<CtTaskImages> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.ct.domain.CtTaskInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务信息Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface CtTaskInfoMapper extends BaseMapperX<CtTaskInfo> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.ct.domain.CtTaskTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务标签Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface CtTaskTagMapper extends BaseMapperX<CtTaskTag> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.ct.domain.CtTaskTemplate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务模板Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface CtTaskTemplateMapper extends BaseMapperX<CtTaskTemplate> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.mapper;
|
||||||
|
|
||||||
|
import com.bs.common.mybatis.mapper.BaseMapperX;
|
||||||
|
import com.bs.ct.domain.CtTaskTemplateTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务模板标签Mapper接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface CtTaskTemplateTagMapper extends BaseMapperX<CtTaskTemplateTag> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.ct.domain.CtGalleryCata;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图库目录Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface ICtGalleryCataService extends MPJBaseService<CtGalleryCata>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.ct.domain.CtGalleryCataShare;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图库目录共享Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface ICtGalleryCataShareService extends MPJBaseService<CtGalleryCataShare>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.ct.domain.CtGalleryImages;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图库图片Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface ICtGalleryImagesService extends MPJBaseService<CtGalleryImages>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.ct.domain.CtGalleryImagesTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图库图片标签Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface ICtGalleryImagesTagService extends MPJBaseService<CtGalleryImagesTag>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.ct.domain.CtGalleryShareUser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图库目录共享用户Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-06-14
|
||||||
|
*/
|
||||||
|
public interface ICtGalleryShareUserService extends MPJBaseService<CtGalleryShareUser>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.ct.domain.CtImagesFeedbackRef;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片任务反馈关联Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-04-20
|
||||||
|
*/
|
||||||
|
public interface ICtImagesFeedbackRefService extends MPJBaseService<CtImagesFeedbackRef>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.ct.domain.CtTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标签信息Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface ICtTagService extends MPJBaseService<CtTag>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.ct.domain.CtTaskBranch;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务机构信息Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface ICtTaskBranchService extends MPJBaseService<CtTaskBranch>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.ct.domain.CtTaskFeedback;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务反馈Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface ICtTaskFeedbackService extends MPJBaseService<CtTaskFeedback>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.ct.domain.CtTaskImages;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务图片信息Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface ICtTaskImagesService extends MPJBaseService<CtTaskImages>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.ct.domain.CtTaskInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务信息Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface ICtTaskInfoService extends MPJBaseService<CtTaskInfo>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.ct.domain.CtTaskTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务标签Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface ICtTaskTagService extends MPJBaseService<CtTaskTag>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.ct.domain.CtTaskTemplate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务模板Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface ICtTaskTemplateService extends MPJBaseService<CtTaskTemplate>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.bs.ct.service;
|
||||||
|
|
||||||
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
|
import com.bs.ct.domain.CtTaskTemplateTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务模板标签Service接口
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
public interface ICtTaskTemplateTagService extends MPJBaseService<CtTaskTemplateTag>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.ct.service.impl;
|
||||||
|
|
||||||
|
import com.bs.ct.mapper.CtGalleryCataMapper;
|
||||||
|
import com.bs.ct.domain.CtGalleryCata;
|
||||||
|
import com.bs.ct.service.ICtGalleryCataService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 图库目录Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CtGalleryCataServiceImpl extends MPJBaseServiceImpl<CtGalleryCataMapper, CtGalleryCata> implements ICtGalleryCataService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.ct.service.impl;
|
||||||
|
|
||||||
|
import com.bs.ct.mapper.CtGalleryCataShareMapper;
|
||||||
|
import com.bs.ct.domain.CtGalleryCataShare;
|
||||||
|
import com.bs.ct.service.ICtGalleryCataShareService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 图库目录共享Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CtGalleryCataShareServiceImpl extends MPJBaseServiceImpl<CtGalleryCataShareMapper, CtGalleryCataShare> implements ICtGalleryCataShareService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.ct.service.impl;
|
||||||
|
|
||||||
|
import com.bs.ct.mapper.CtGalleryImagesMapper;
|
||||||
|
import com.bs.ct.domain.CtGalleryImages;
|
||||||
|
import com.bs.ct.service.ICtGalleryImagesService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 图库图片Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CtGalleryImagesServiceImpl extends MPJBaseServiceImpl<CtGalleryImagesMapper, CtGalleryImages> implements ICtGalleryImagesService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.ct.service.impl;
|
||||||
|
|
||||||
|
import com.bs.ct.mapper.CtGalleryImagesTagMapper;
|
||||||
|
import com.bs.ct.domain.CtGalleryImagesTag;
|
||||||
|
import com.bs.ct.service.ICtGalleryImagesTagService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 图库图片标签Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CtGalleryImagesTagServiceImpl extends MPJBaseServiceImpl<CtGalleryImagesTagMapper, CtGalleryImagesTag> implements ICtGalleryImagesTagService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.ct.service.impl;
|
||||||
|
|
||||||
|
import com.bs.ct.mapper.CtGalleryShareUserMapper;
|
||||||
|
import com.bs.ct.domain.CtGalleryShareUser;
|
||||||
|
import com.bs.ct.service.ICtGalleryShareUserService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 图库目录共享用户Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-06-14
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CtGalleryShareUserServiceImpl extends MPJBaseServiceImpl<CtGalleryShareUserMapper, CtGalleryShareUser> implements ICtGalleryShareUserService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.ct.service.impl;
|
||||||
|
|
||||||
|
import com.bs.ct.mapper.CtImagesFeedbackRefMapper;
|
||||||
|
import com.bs.ct.domain.CtImagesFeedbackRef;
|
||||||
|
import com.bs.ct.service.ICtImagesFeedbackRefService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 图片任务反馈关联Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-04-20
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CtImagesFeedbackRefServiceImpl extends MPJBaseServiceImpl<CtImagesFeedbackRefMapper, CtImagesFeedbackRef> implements ICtImagesFeedbackRefService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.ct.service.impl;
|
||||||
|
|
||||||
|
import com.bs.ct.mapper.CtTagMapper;
|
||||||
|
import com.bs.ct.domain.CtTag;
|
||||||
|
import com.bs.ct.service.ICtTagService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 标签信息Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CtTagServiceImpl extends MPJBaseServiceImpl<CtTagMapper, CtTag> implements ICtTagService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.ct.service.impl;
|
||||||
|
|
||||||
|
import com.bs.ct.mapper.CtTaskBranchMapper;
|
||||||
|
import com.bs.ct.domain.CtTaskBranch;
|
||||||
|
import com.bs.ct.service.ICtTaskBranchService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 任务机构信息Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CtTaskBranchServiceImpl extends MPJBaseServiceImpl<CtTaskBranchMapper, CtTaskBranch> implements ICtTaskBranchService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.ct.service.impl;
|
||||||
|
|
||||||
|
import com.bs.ct.mapper.CtTaskFeedbackMapper;
|
||||||
|
import com.bs.ct.domain.CtTaskFeedback;
|
||||||
|
import com.bs.ct.service.ICtTaskFeedbackService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 任务反馈Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CtTaskFeedbackServiceImpl extends MPJBaseServiceImpl<CtTaskFeedbackMapper, CtTaskFeedback> implements ICtTaskFeedbackService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.ct.service.impl;
|
||||||
|
|
||||||
|
import com.bs.ct.mapper.CtTaskImagesMapper;
|
||||||
|
import com.bs.ct.domain.CtTaskImages;
|
||||||
|
import com.bs.ct.service.ICtTaskImagesService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 任务图片信息Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CtTaskImagesServiceImpl extends MPJBaseServiceImpl<CtTaskImagesMapper, CtTaskImages> implements ICtTaskImagesService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.ct.service.impl;
|
||||||
|
|
||||||
|
import com.bs.ct.mapper.CtTaskInfoMapper;
|
||||||
|
import com.bs.ct.domain.CtTaskInfo;
|
||||||
|
import com.bs.ct.service.ICtTaskInfoService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 任务信息Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CtTaskInfoServiceImpl extends MPJBaseServiceImpl<CtTaskInfoMapper, CtTaskInfo> implements ICtTaskInfoService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.ct.service.impl;
|
||||||
|
|
||||||
|
import com.bs.ct.mapper.CtTaskTagMapper;
|
||||||
|
import com.bs.ct.domain.CtTaskTag;
|
||||||
|
import com.bs.ct.service.ICtTaskTagService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 任务标签Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CtTaskTagServiceImpl extends MPJBaseServiceImpl<CtTaskTagMapper, CtTaskTag> implements ICtTaskTagService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.ct.service.impl;
|
||||||
|
|
||||||
|
import com.bs.ct.mapper.CtTaskTemplateMapper;
|
||||||
|
import com.bs.ct.domain.CtTaskTemplate;
|
||||||
|
import com.bs.ct.service.ICtTaskTemplateService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 任务模板Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CtTaskTemplateServiceImpl extends MPJBaseServiceImpl<CtTaskTemplateMapper, CtTaskTemplate> implements ICtTaskTemplateService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.bs.ct.service.impl;
|
||||||
|
|
||||||
|
import com.bs.ct.mapper.CtTaskTemplateTagMapper;
|
||||||
|
import com.bs.ct.domain.CtTaskTemplateTag;
|
||||||
|
import com.bs.ct.service.ICtTaskTemplateTagService;
|
||||||
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
/**
|
||||||
|
* 任务模板标签Service业务层处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class CtTaskTemplateTagServiceImpl extends MPJBaseServiceImpl<CtTaskTemplateTagMapper, CtTaskTemplateTag> implements ICtTaskTemplateTagService {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,74 @@
|
|||||||
|
package com.bs.ct.utils;
|
||||||
|
|
||||||
|
import com.drew.imaging.ImageMetadataReader;
|
||||||
|
import com.drew.metadata.Directory;
|
||||||
|
import com.drew.metadata.Metadata;
|
||||||
|
import com.drew.metadata.Tag;
|
||||||
|
import com.drew.metadata.exif.ExifIFD0Directory;
|
||||||
|
import com.drew.metadata.exif.ExifSubIFDDirectory;
|
||||||
|
import com.drew.metadata.exif.GpsDirectory;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class ExifUtils {
|
||||||
|
private static final Map<String, String> CHINESE_TAG_NAMES = new HashMap<>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
// 初始化常用EXIF标签的中文翻译
|
||||||
|
CHINESE_TAG_NAMES.put("Compression Type", "压缩类型");
|
||||||
|
CHINESE_TAG_NAMES.put("Image Width", "图像宽度");
|
||||||
|
CHINESE_TAG_NAMES.put("Image Height", "图像高度");
|
||||||
|
CHINESE_TAG_NAMES.put("Data Precision", "数据精度");
|
||||||
|
CHINESE_TAG_NAMES.put("Make", "制造商");
|
||||||
|
CHINESE_TAG_NAMES.put("Model", "型号");
|
||||||
|
CHINESE_TAG_NAMES.put("Orientation", "方向");
|
||||||
|
CHINESE_TAG_NAMES.put("DateTime Original", "拍摄时间");
|
||||||
|
CHINESE_TAG_NAMES.put("Create Date", "创建日期");
|
||||||
|
CHINESE_TAG_NAMES.put("Exposure Time", "曝光时间");
|
||||||
|
CHINESE_TAG_NAMES.put("F-Number", "光圈值");
|
||||||
|
CHINESE_TAG_NAMES.put("ISO Speed Ratings", "ISO速度");
|
||||||
|
CHINESE_TAG_NAMES.put("Focal Length", "焦距");
|
||||||
|
CHINESE_TAG_NAMES.put("Flash", "闪光灯");
|
||||||
|
CHINESE_TAG_NAMES.put("Metering Mode", "测光模式");
|
||||||
|
CHINESE_TAG_NAMES.put("White Balance", "白平衡");
|
||||||
|
CHINESE_TAG_NAMES.put("Exposure Program", "曝光程序");
|
||||||
|
CHINESE_TAG_NAMES.put("Exposure Bias Value", "曝光补偿");
|
||||||
|
CHINESE_TAG_NAMES.put("GPS Latitude", "GPS纬度");
|
||||||
|
CHINESE_TAG_NAMES.put("GPS Longitude", "GPS经度");
|
||||||
|
CHINESE_TAG_NAMES.put("GPS Altitude", "GPS海拔");
|
||||||
|
CHINESE_TAG_NAMES.put("GPS Date Stamp", "GPS日期");
|
||||||
|
CHINESE_TAG_NAMES.put("GPS Time Stamp", "GPS时间");
|
||||||
|
CHINESE_TAG_NAMES.put("File Name", "文件名");
|
||||||
|
CHINESE_TAG_NAMES.put("File Size", "文件大小");
|
||||||
|
CHINESE_TAG_NAMES.put("File Modified Date", "文件修改时间");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, String> getExifInfoMap(String imagePath) throws Exception {
|
||||||
|
Map<String, String> result = new LinkedHashMap<>();
|
||||||
|
Metadata metadata = ImageMetadataReader.readMetadata(new File(imagePath));
|
||||||
|
|
||||||
|
for (Directory directory : metadata.getDirectories()) {
|
||||||
|
for (Tag tag : directory.getTags()) {
|
||||||
|
String chineseName = CHINESE_TAG_NAMES.getOrDefault(tag.getTagName(), tag.getTagName());
|
||||||
|
result.put(chineseName, tag.getDescription());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static StringBuffer getExifInfo(String imagePath) throws Exception {
|
||||||
|
StringBuffer result = new StringBuffer();
|
||||||
|
Metadata metadata = ImageMetadataReader.readMetadata(new File(imagePath));
|
||||||
|
|
||||||
|
for (Directory directory : metadata.getDirectories()) {
|
||||||
|
for (Tag tag : directory.getTags()) {
|
||||||
|
String chineseName = CHINESE_TAG_NAMES.getOrDefault(tag.getTagName(), tag.getTagName());
|
||||||
|
result.append(chineseName + ":" + tag.getDescription() + "\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.bs.ct.utils;
|
||||||
|
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
public class HtmlUtils {
|
||||||
|
|
||||||
|
// 定义 HTML 标签的正则表达式
|
||||||
|
private static final Pattern HTML_TAG_PATTERN = Pattern.compile("<[^>]+>");
|
||||||
|
|
||||||
|
// 去除 HTML 标签的方法
|
||||||
|
public static String stripHtmlTags(String html) {
|
||||||
|
if (html == null || html.trim().isEmpty()) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
Matcher matcher = HTML_TAG_PATTERN.matcher(html);
|
||||||
|
return matcher.replaceAll("");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
|
||||||
|
package com.bs.ct.utils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
||||||
|
public final class UUIDUtils {
|
||||||
|
|
||||||
|
|
||||||
|
private UUIDUtils() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static String generatorUUID() {
|
||||||
|
UUID uuid = UUID.randomUUID();
|
||||||
|
return uuid.toString().replaceAll("-", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得20个长度的十六进制的UUID
|
||||||
|
* @return UUID
|
||||||
|
*/
|
||||||
|
public static String generator20UUID(){
|
||||||
|
UUID id=UUID.randomUUID();
|
||||||
|
String[] idd=id.toString().split("-");
|
||||||
|
return idd[0]+idd[1]+idd[2]+idd[3];
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,101 @@
|
|||||||
|
package com.bs.ct.vo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import com.bs.ct.domain.CtTaskFeedback;
|
||||||
|
import com.bs.ct.domain.CtTaskInfo;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务机构信息对象 ct_task_branch
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CtTaskBranchVO extends BaseEntity{
|
||||||
|
|
||||||
|
/** 任务标题 */
|
||||||
|
|
||||||
|
@Excel(name = "任务名称")
|
||||||
|
@ApiModelProperty(value = "任务名称")
|
||||||
|
private String taskTitle;
|
||||||
|
|
||||||
|
/** 任务类型 */
|
||||||
|
|
||||||
|
@Excel(name = "任务类型",dictType = "task_type")
|
||||||
|
@ApiModelProperty(value = "任务类型")
|
||||||
|
private String taskType;
|
||||||
|
|
||||||
|
/** 任务要求 */
|
||||||
|
|
||||||
|
@Excel(name = "任务内容")
|
||||||
|
@ApiModelProperty(value = "任务内容")
|
||||||
|
private String taskContent;
|
||||||
|
|
||||||
|
|
||||||
|
/** 发布单位 */
|
||||||
|
|
||||||
|
@Excel(name = "发布单位")
|
||||||
|
@ApiModelProperty(value = "发布单位")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String branchNameParent;
|
||||||
|
|
||||||
|
|
||||||
|
/** 发布部门 */
|
||||||
|
|
||||||
|
@Excel(name = "发布部门")
|
||||||
|
@ApiModelProperty(value = "发布部门")
|
||||||
|
private String branchName;
|
||||||
|
|
||||||
|
/** 发布人 */
|
||||||
|
|
||||||
|
@Excel(name = "发布人")
|
||||||
|
@ApiModelProperty(value = "发布人")
|
||||||
|
private String taskInitiator;
|
||||||
|
|
||||||
|
@Excel(name = "任务期限")
|
||||||
|
@ApiModelProperty(value = "任务期限")
|
||||||
|
private String startToEndDate;
|
||||||
|
|
||||||
|
@Excel(name = "办理单位")
|
||||||
|
@ApiModelProperty(value = "办理单位")
|
||||||
|
private String transactBranchName;
|
||||||
|
|
||||||
|
@Excel(name = "办理部门")
|
||||||
|
@ApiModelProperty(value = "办理部门")
|
||||||
|
private String transactDeptName;
|
||||||
|
|
||||||
|
@Excel(name = "办理人")
|
||||||
|
@ApiModelProperty(value = "办理人")
|
||||||
|
private String transactInitiator;
|
||||||
|
|
||||||
|
|
||||||
|
/** 任务状态 */
|
||||||
|
|
||||||
|
@Excel(name = "任务状态")
|
||||||
|
@ApiModelProperty(value = "任务状态")
|
||||||
|
private String taskStatus;
|
||||||
|
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private CtTaskFeedback sdTaskOtherFeedbackByCreate;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private CtTaskFeedback sdTaskOtherFeedbackByFeedback;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private CtTaskInfo sdTaskOther;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,114 @@
|
|||||||
|
package com.bs.ct.vo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import com.bs.ct.domain.CtTaskBranch;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务信息对象 ct_task_info
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CtTaskInfoVO {
|
||||||
|
|
||||||
|
|
||||||
|
/** 任务类型 */
|
||||||
|
|
||||||
|
@Excel(name = "任务类型")
|
||||||
|
@ApiModelProperty(value = "任务类型")
|
||||||
|
private String taskType;
|
||||||
|
|
||||||
|
/** 任务标题 */
|
||||||
|
|
||||||
|
@Excel(name = "任务标题")
|
||||||
|
@ApiModelProperty(value = "任务标题")
|
||||||
|
private String taskTitle;
|
||||||
|
|
||||||
|
/** 任务编号 */
|
||||||
|
|
||||||
|
@Excel(name = "任务编号")
|
||||||
|
@ApiModelProperty(value = "任务编号")
|
||||||
|
private String taskCode;
|
||||||
|
|
||||||
|
|
||||||
|
//@Excel(name = "任务要求")
|
||||||
|
@ApiModelProperty(value = "任务期限")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String startToEndDate;
|
||||||
|
|
||||||
|
/** 任务要求 */
|
||||||
|
|
||||||
|
@Excel(name = "任务内容")
|
||||||
|
@ApiModelProperty(value = "任务内容")
|
||||||
|
private String taskContent;
|
||||||
|
|
||||||
|
/** 完成状态 */
|
||||||
|
|
||||||
|
@Excel(name = "完成状态")
|
||||||
|
@ApiModelProperty(value = "完成状态")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
|
||||||
|
/** 任务发起人 */
|
||||||
|
|
||||||
|
@Excel(name = "任务发起人")
|
||||||
|
@ApiModelProperty(value = "任务发起人")
|
||||||
|
private String taskInitiator;
|
||||||
|
|
||||||
|
|
||||||
|
/** 任务发起单位 */
|
||||||
|
|
||||||
|
@Excel(name = "任务发起单位")
|
||||||
|
@ApiModelProperty(value = "任务发起单位")
|
||||||
|
private String branchName;
|
||||||
|
|
||||||
|
|
||||||
|
/** 任务发起部门 */
|
||||||
|
|
||||||
|
@Excel(name = "任务发起部门")
|
||||||
|
@ApiModelProperty(value = "任务发起部门")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String deptName;
|
||||||
|
|
||||||
|
/** 任务发布日期 */
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@Excel(name = "任务发布日期", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
|
@ApiModelProperty(value = "任务发布日期")
|
||||||
|
@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||||
|
private Date taskDate;
|
||||||
|
|
||||||
|
@Excel(name = "办理单位")
|
||||||
|
@ApiModelProperty(value = "办理单位")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String transactBranchName;
|
||||||
|
|
||||||
|
@Excel(name = "办理部门")
|
||||||
|
@ApiModelProperty(value = "办理部门")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String transactDeptName;
|
||||||
|
|
||||||
|
@Excel(name = "办理人")
|
||||||
|
@ApiModelProperty(value = "办理人")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String transactInitiator;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
|
|
||||||
|
@Excel(name = "备注")
|
||||||
|
@ApiModelProperty(value = "备注")
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,87 @@
|
|||||||
|
package com.bs.ct.vo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务模板对象 ct_task_template
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CtTaskTemplateVO extends BaseEntity{
|
||||||
|
|
||||||
|
/** 模板名称 */
|
||||||
|
|
||||||
|
@Excel(name = "模板名称")
|
||||||
|
@ApiModelProperty(value = "模板名称")
|
||||||
|
private String templateName;
|
||||||
|
|
||||||
|
/** 任务类型 */
|
||||||
|
|
||||||
|
@Excel(name = "任务类型",dictType = "task_type")
|
||||||
|
@ApiModelProperty(value = "任务类型")
|
||||||
|
private String taskType;
|
||||||
|
|
||||||
|
/** 任务要求 */
|
||||||
|
|
||||||
|
@Excel(name = "任务要求")
|
||||||
|
@ApiModelProperty(value = "任务要求")
|
||||||
|
private String taskContent;
|
||||||
|
|
||||||
|
/** 任务标题 */
|
||||||
|
|
||||||
|
@Excel(name = "任务标题")
|
||||||
|
@ApiModelProperty(value = "任务标题")
|
||||||
|
private String taskTitle;
|
||||||
|
|
||||||
|
/** 任务标签 */
|
||||||
|
|
||||||
|
@Excel(name = "任务标签")
|
||||||
|
@ApiModelProperty(value = "任务标签")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String tagNames;
|
||||||
|
|
||||||
|
/** 创建单位 */
|
||||||
|
|
||||||
|
@Excel(name = "创建单位")
|
||||||
|
@ApiModelProperty(value = "创建单位")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String createByBranch;
|
||||||
|
|
||||||
|
/** 创建部门 */
|
||||||
|
|
||||||
|
@Excel(name = "创建部门")
|
||||||
|
@ApiModelProperty(value = "创建部门")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String createByDeptName;
|
||||||
|
|
||||||
|
|
||||||
|
/** 创建人 */
|
||||||
|
|
||||||
|
@Excel(name = "创建人")
|
||||||
|
@ApiModelProperty(value = "创建人")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String createByUserName;
|
||||||
|
|
||||||
|
|
||||||
|
@Excel(name = "创建时间")
|
||||||
|
@ApiModelProperty(value = "创建时间")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String createTimeVo;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,80 @@
|
|||||||
|
package com.bs.ct.vo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.bs.common.annotation.Excel;
|
||||||
|
import com.bs.common.core.domain.BaseEntity;
|
||||||
|
import com.bs.ct.domain.CtTaskFeedback;
|
||||||
|
import com.bs.ct.domain.CtTaskInfo;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务机构信息对象 ct_task_branch
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
* @date 2025-02-22
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class MyTaskVO extends BaseEntity{
|
||||||
|
|
||||||
|
/** 任务标题 */
|
||||||
|
|
||||||
|
@Excel(name = "任务名称")
|
||||||
|
@ApiModelProperty(value = "任务名称")
|
||||||
|
private String taskTitle;
|
||||||
|
|
||||||
|
/** 任务类型 */
|
||||||
|
|
||||||
|
@Excel(name = "任务类型",dictType = "task_type")
|
||||||
|
@ApiModelProperty(value = "任务类型")
|
||||||
|
private String taskType;
|
||||||
|
|
||||||
|
/** 任务要求 */
|
||||||
|
|
||||||
|
@Excel(name = "任务内容")
|
||||||
|
@ApiModelProperty(value = "任务内容")
|
||||||
|
private String taskContent;
|
||||||
|
|
||||||
|
|
||||||
|
/** 发布单位 */
|
||||||
|
|
||||||
|
@Excel(name = "发布单位")
|
||||||
|
@ApiModelProperty(value = "发布单位")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String branchNameParent;
|
||||||
|
|
||||||
|
|
||||||
|
/** 发布部门 */
|
||||||
|
|
||||||
|
@Excel(name = "发布部门")
|
||||||
|
@ApiModelProperty(value = "发布部门")
|
||||||
|
private String branchName;
|
||||||
|
|
||||||
|
/** 发布人 */
|
||||||
|
|
||||||
|
@Excel(name = "发布人")
|
||||||
|
@ApiModelProperty(value = "发布人")
|
||||||
|
private String taskInitiator;
|
||||||
|
|
||||||
|
@Excel(name = "任务期限")
|
||||||
|
@ApiModelProperty(value = "任务期限")
|
||||||
|
private String startToEndDate;
|
||||||
|
|
||||||
|
|
||||||
|
/** 任务状态 */
|
||||||
|
|
||||||
|
@Excel(name = "任务状态")
|
||||||
|
@ApiModelProperty(value = "任务状态")
|
||||||
|
private String taskStatus;
|
||||||
|
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private CtTaskFeedback sdTaskOtherFeedbackByCreate;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private CtTaskFeedback sdTaskOtherFeedbackByFeedback;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private CtTaskInfo sdTaskOther;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,94 @@
|
|||||||
|
package com.bs.web.controller.common;
|
||||||
|
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.util.FastByteArrayOutputStream;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import com.google.code.kaptcha.Producer;
|
||||||
|
import com.bs.common.config.BsConfig;
|
||||||
|
import com.bs.common.constant.CacheConstants;
|
||||||
|
import com.bs.common.constant.Constants;
|
||||||
|
import com.bs.common.core.domain.AjaxResult;
|
||||||
|
import com.bs.common.core.redis.RedisCache;
|
||||||
|
import com.bs.common.utils.sign.Base64;
|
||||||
|
import com.bs.common.utils.uuid.IdUtils;
|
||||||
|
import com.bs.system.service.ISysConfigService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证码操作处理
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
public class CaptchaController
|
||||||
|
{
|
||||||
|
@Resource(name = "captchaProducer")
|
||||||
|
private Producer captchaProducer;
|
||||||
|
|
||||||
|
@Resource(name = "captchaProducerMath")
|
||||||
|
private Producer captchaProducerMath;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RedisCache redisCache;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISysConfigService configService;
|
||||||
|
/**
|
||||||
|
* 生成验证码
|
||||||
|
*/
|
||||||
|
@GetMapping("/captchaImage")
|
||||||
|
public AjaxResult getCode(HttpServletResponse response) throws IOException
|
||||||
|
{
|
||||||
|
AjaxResult ajax = AjaxResult.success();
|
||||||
|
boolean captchaEnabled = configService.selectCaptchaEnabled();
|
||||||
|
ajax.put("captchaEnabled", captchaEnabled);
|
||||||
|
if (!captchaEnabled)
|
||||||
|
{
|
||||||
|
return ajax;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 保存验证码信息
|
||||||
|
String uuid = IdUtils.simpleUUID();
|
||||||
|
String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
|
||||||
|
|
||||||
|
String capStr = null, code = null;
|
||||||
|
BufferedImage image = null;
|
||||||
|
|
||||||
|
// 生成验证码
|
||||||
|
String captchaType = BsConfig.getCaptchaType();
|
||||||
|
if ("math".equals(captchaType))
|
||||||
|
{
|
||||||
|
String capText = captchaProducerMath.createText();
|
||||||
|
capStr = capText.substring(0, capText.lastIndexOf("@"));
|
||||||
|
code = capText.substring(capText.lastIndexOf("@") + 1);
|
||||||
|
image = captchaProducerMath.createImage(capStr);
|
||||||
|
}
|
||||||
|
else if ("char".equals(captchaType))
|
||||||
|
{
|
||||||
|
capStr = code = captchaProducer.createText();
|
||||||
|
image = captchaProducer.createImage(capStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
|
||||||
|
// 转换流信息写出
|
||||||
|
FastByteArrayOutputStream os = new FastByteArrayOutputStream();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ImageIO.write(image, "jpg", os);
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
return AjaxResult.error(e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
ajax.put("uuid", uuid);
|
||||||
|
ajax.put("img", Base64.encode(os.toByteArray()));
|
||||||
|
return ajax;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,120 @@
|
|||||||
|
package com.bs.web.controller.monitor;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.Set;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.redis.core.RedisCallback;
|
||||||
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import com.bs.common.constant.CacheConstants;
|
||||||
|
import com.bs.common.core.domain.AjaxResult;
|
||||||
|
import com.bs.common.utils.StringUtils;
|
||||||
|
import com.bs.system.domain.SysCache;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 缓存监控
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/monitor/cache")
|
||||||
|
public class CacheController
|
||||||
|
{
|
||||||
|
@Autowired
|
||||||
|
private RedisTemplate<String, String> redisTemplate;
|
||||||
|
|
||||||
|
private final static List<SysCache> caches = new ArrayList<SysCache>();
|
||||||
|
{
|
||||||
|
caches.add(new SysCache(CacheConstants.LOGIN_TOKEN_KEY, "用户信息"));
|
||||||
|
caches.add(new SysCache(CacheConstants.SYS_CONFIG_KEY, "配置信息"));
|
||||||
|
caches.add(new SysCache(CacheConstants.SYS_DICT_KEY, "数据字典"));
|
||||||
|
caches.add(new SysCache(CacheConstants.CAPTCHA_CODE_KEY, "验证码"));
|
||||||
|
caches.add(new SysCache(CacheConstants.REPEAT_SUBMIT_KEY, "防重提交"));
|
||||||
|
caches.add(new SysCache(CacheConstants.RATE_LIMIT_KEY, "限流处理"));
|
||||||
|
caches.add(new SysCache(CacheConstants.PWD_ERR_CNT_KEY, "密码错误次数"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
||||||
|
@GetMapping()
|
||||||
|
public AjaxResult getInfo() throws Exception
|
||||||
|
{
|
||||||
|
Properties info = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info());
|
||||||
|
Properties commandStats = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info("commandstats"));
|
||||||
|
Object dbSize = redisTemplate.execute((RedisCallback<Object>) connection -> connection.dbSize());
|
||||||
|
|
||||||
|
Map<String, Object> result = new HashMap<>(3);
|
||||||
|
result.put("info", info);
|
||||||
|
result.put("dbSize", dbSize);
|
||||||
|
|
||||||
|
List<Map<String, String>> pieList = new ArrayList<>();
|
||||||
|
commandStats.stringPropertyNames().forEach(key -> {
|
||||||
|
Map<String, String> data = new HashMap<>(2);
|
||||||
|
String property = commandStats.getProperty(key);
|
||||||
|
data.put("name", StringUtils.removeStart(key, "cmdstat_"));
|
||||||
|
data.put("value", StringUtils.substringBetween(property, "calls=", ",usec"));
|
||||||
|
pieList.add(data);
|
||||||
|
});
|
||||||
|
result.put("commandStats", pieList);
|
||||||
|
return AjaxResult.success(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
||||||
|
@GetMapping("/getNames")
|
||||||
|
public AjaxResult cache()
|
||||||
|
{
|
||||||
|
return AjaxResult.success(caches);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
||||||
|
@GetMapping("/getKeys/{cacheName}")
|
||||||
|
public AjaxResult getCacheKeys(@PathVariable String cacheName)
|
||||||
|
{
|
||||||
|
Set<String> cacheKeys = redisTemplate.keys(cacheName + "*");
|
||||||
|
return AjaxResult.success(cacheKeys);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
||||||
|
@GetMapping("/getValue/{cacheName}/{cacheKey}")
|
||||||
|
public AjaxResult getCacheValue(@PathVariable String cacheName, @PathVariable String cacheKey)
|
||||||
|
{
|
||||||
|
String cacheValue = redisTemplate.opsForValue().get(cacheKey);
|
||||||
|
SysCache sysCache = new SysCache(cacheName, cacheKey, cacheValue);
|
||||||
|
return AjaxResult.success(sysCache);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
||||||
|
@DeleteMapping("/clearCacheName/{cacheName}")
|
||||||
|
public AjaxResult clearCacheName(@PathVariable String cacheName)
|
||||||
|
{
|
||||||
|
Collection<String> cacheKeys = redisTemplate.keys(cacheName + "*");
|
||||||
|
redisTemplate.delete(cacheKeys);
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
||||||
|
@DeleteMapping("/clearCacheKey/{cacheKey}")
|
||||||
|
public AjaxResult clearCacheKey(@PathVariable String cacheKey)
|
||||||
|
{
|
||||||
|
redisTemplate.delete(cacheKey);
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
||||||
|
@DeleteMapping("/clearCacheAll")
|
||||||
|
public AjaxResult clearCacheAll()
|
||||||
|
{
|
||||||
|
Collection<String> cacheKeys = redisTemplate.keys("*");
|
||||||
|
redisTemplate.delete(cacheKeys);
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package com.bs.web.controller.monitor;
|
||||||
|
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import com.bs.common.core.domain.AjaxResult;
|
||||||
|
import com.bs.framework.web.domain.Server;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务器监控
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/monitor/server")
|
||||||
|
public class ServerController
|
||||||
|
{
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:server:list')")
|
||||||
|
@GetMapping()
|
||||||
|
public AjaxResult getInfo() throws Exception
|
||||||
|
{
|
||||||
|
Server server = new Server();
|
||||||
|
server.copyTo();
|
||||||
|
return AjaxResult.success(server);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,82 @@
|
|||||||
|
package com.bs.web.controller.monitor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import com.bs.common.annotation.Log;
|
||||||
|
import com.bs.common.core.controller.BaseController;
|
||||||
|
import com.bs.common.core.domain.AjaxResult;
|
||||||
|
import com.bs.common.core.page.TableDataInfo;
|
||||||
|
import com.bs.common.enums.BusinessType;
|
||||||
|
import com.bs.common.utils.poi.ExcelUtil;
|
||||||
|
import com.bs.framework.web.service.SysPasswordService;
|
||||||
|
import com.bs.system.domain.SysLogininfor;
|
||||||
|
import com.bs.system.service.ISysLogininforService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统访问记录
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/monitor/logininfor")
|
||||||
|
public class SysLogininforController extends BaseController
|
||||||
|
{
|
||||||
|
@Autowired
|
||||||
|
private ISysLogininforService logininforService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysPasswordService passwordService;
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:logininfor:list')")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo list(SysLogininfor logininfor)
|
||||||
|
{
|
||||||
|
startPage();
|
||||||
|
List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Log(title = "登录日志", businessType = BusinessType.EXPORT)
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:logininfor:export')")
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(HttpServletResponse response, SysLogininfor logininfor)
|
||||||
|
{
|
||||||
|
List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
|
||||||
|
ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class);
|
||||||
|
util.exportExcel(response, list, "登录日志");
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')")
|
||||||
|
@Log(title = "登录日志", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{infoIds}")
|
||||||
|
public AjaxResult remove(@PathVariable Long[] infoIds)
|
||||||
|
{
|
||||||
|
return toAjax(logininforService.deleteLogininforByIds(infoIds));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')")
|
||||||
|
@Log(title = "登录日志", businessType = BusinessType.CLEAN)
|
||||||
|
@DeleteMapping("/clean")
|
||||||
|
public AjaxResult clean()
|
||||||
|
{
|
||||||
|
logininforService.cleanLogininfor();
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:logininfor:unlock')")
|
||||||
|
@Log(title = "账户解锁", businessType = BusinessType.OTHER)
|
||||||
|
@GetMapping("/unlock/{userName}")
|
||||||
|
public AjaxResult unlock(@PathVariable("userName") String userName)
|
||||||
|
{
|
||||||
|
passwordService.clearLoginRecordCache(userName);
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
package com.bs.web.controller.monitor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import com.bs.common.annotation.Log;
|
||||||
|
import com.bs.common.core.controller.BaseController;
|
||||||
|
import com.bs.common.core.domain.AjaxResult;
|
||||||
|
import com.bs.common.core.page.TableDataInfo;
|
||||||
|
import com.bs.common.enums.BusinessType;
|
||||||
|
import com.bs.common.utils.poi.ExcelUtil;
|
||||||
|
import com.bs.system.domain.SysOperLog;
|
||||||
|
import com.bs.system.service.ISysOperLogService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作日志记录
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/monitor/operlog")
|
||||||
|
public class SysOperlogController extends BaseController
|
||||||
|
{
|
||||||
|
@Autowired
|
||||||
|
private ISysOperLogService operLogService;
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:operlog:list')")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo list(SysOperLog operLog)
|
||||||
|
{
|
||||||
|
startPage();
|
||||||
|
List<SysOperLog> list = operLogService.selectOperLogList(operLog);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Log(title = "操作日志", businessType = BusinessType.EXPORT)
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:operlog:export')")
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(HttpServletResponse response, SysOperLog operLog)
|
||||||
|
{
|
||||||
|
List<SysOperLog> list = operLogService.selectOperLogList(operLog);
|
||||||
|
ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class);
|
||||||
|
util.exportExcel(response, list, "操作日志");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Log(title = "操作日志", businessType = BusinessType.DELETE)
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:operlog:remove')")
|
||||||
|
@DeleteMapping("/{operIds}")
|
||||||
|
public AjaxResult remove(@PathVariable Long[] operIds)
|
||||||
|
{
|
||||||
|
return toAjax(operLogService.deleteOperLogByIds(operIds));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Log(title = "操作日志", businessType = BusinessType.CLEAN)
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:operlog:remove')")
|
||||||
|
@DeleteMapping("/clean")
|
||||||
|
public AjaxResult clean()
|
||||||
|
{
|
||||||
|
operLogService.cleanOperLog();
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
package com.bs.web.controller.monitor;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import com.bs.common.annotation.Log;
|
||||||
|
import com.bs.common.constant.CacheConstants;
|
||||||
|
import com.bs.common.core.controller.BaseController;
|
||||||
|
import com.bs.common.core.domain.AjaxResult;
|
||||||
|
import com.bs.common.core.domain.model.LoginUser;
|
||||||
|
import com.bs.common.core.page.TableDataInfo;
|
||||||
|
import com.bs.common.core.redis.RedisCache;
|
||||||
|
import com.bs.common.enums.BusinessType;
|
||||||
|
import com.bs.common.utils.StringUtils;
|
||||||
|
import com.bs.system.domain.SysUserOnline;
|
||||||
|
import com.bs.system.service.ISysUserOnlineService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 在线用户监控
|
||||||
|
*
|
||||||
|
* @author bs
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/monitor/online")
|
||||||
|
public class SysUserOnlineController extends BaseController
|
||||||
|
{
|
||||||
|
@Autowired
|
||||||
|
private ISysUserOnlineService userOnlineService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RedisCache redisCache;
|
||||||
|
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:online:list')")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo list(String ipaddr, String userName)
|
||||||
|
{
|
||||||
|
Collection<String> keys = redisCache.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
|
||||||
|
List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
|
||||||
|
for (String key : keys)
|
||||||
|
{
|
||||||
|
LoginUser user = redisCache.getCacheObject(key);
|
||||||
|
if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName))
|
||||||
|
{
|
||||||
|
userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
|
||||||
|
}
|
||||||
|
else if (StringUtils.isNotEmpty(ipaddr))
|
||||||
|
{
|
||||||
|
userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
|
||||||
|
}
|
||||||
|
else if (StringUtils.isNotEmpty(userName) && StringUtils.isNotNull(user.getUser()))
|
||||||
|
{
|
||||||
|
userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
userOnlineList.add(userOnlineService.loginUserToUserOnline(user));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Collections.reverse(userOnlineList);
|
||||||
|
userOnlineList.removeAll(Collections.singleton(null));
|
||||||
|
return getDataTable(userOnlineList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 强退用户
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('monitor:online:forceLogout')")
|
||||||
|
@Log(title = "在线用户", businessType = BusinessType.FORCE)
|
||||||
|
@DeleteMapping("/{tokenId}")
|
||||||
|
public AjaxResult forceLogout(@PathVariable String tokenId)
|
||||||
|
{
|
||||||
|
redisCache.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId);
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue