|
@@ -1,10 +1,40 @@
|
|
|
package org.jeecg.modules.ctop.controller;
|
|
|
|
|
|
import cn.com.ctop.common.module.constant.CtopRoleCodeConstant;
|
|
|
-import cn.com.ctop.common.module.entity.*;
|
|
|
+import cn.com.ctop.common.module.entity.ByteDanceCleanMaterialReport;
|
|
|
+import cn.com.ctop.common.module.entity.MaterialAscription;
|
|
|
+import cn.com.ctop.common.module.entity.MaterialCutFrame;
|
|
|
+import cn.com.ctop.common.module.entity.MaterialImageInfo;
|
|
|
+import cn.com.ctop.common.module.entity.MaterialInfo;
|
|
|
+import cn.com.ctop.common.module.entity.MaterialParameter;
|
|
|
+import cn.com.ctop.common.module.entity.MaterialTag;
|
|
|
+import cn.com.ctop.common.module.entity.Product;
|
|
|
+import cn.com.ctop.common.module.entity.Project;
|
|
|
+import cn.com.ctop.common.module.entity.UserCompany;
|
|
|
import cn.com.ctop.common.module.enums.MaterialSupplierEnum;
|
|
|
-import cn.com.ctop.common.module.service.*;
|
|
|
-import cn.com.ctop.common.module.utils.*;
|
|
|
+import cn.com.ctop.common.module.service.IByteDanceCleanMaterialReportService;
|
|
|
+import cn.com.ctop.common.module.service.IMaterialAscriptionService;
|
|
|
+import cn.com.ctop.common.module.service.IMaterialCutFrameService;
|
|
|
+import cn.com.ctop.common.module.service.IMaterialImageInfoService;
|
|
|
+import cn.com.ctop.common.module.service.IMaterialInfoService;
|
|
|
+import cn.com.ctop.common.module.service.IMaterialParameterService;
|
|
|
+import cn.com.ctop.common.module.service.IMaterialTagService;
|
|
|
+import cn.com.ctop.common.module.service.IMessageTemplate;
|
|
|
+import cn.com.ctop.common.module.service.IProductService;
|
|
|
+import cn.com.ctop.common.module.service.IProjectService;
|
|
|
+import cn.com.ctop.common.module.service.ISendMessageService;
|
|
|
+import cn.com.ctop.common.module.service.ISysUserService;
|
|
|
+import cn.com.ctop.common.module.service.IUserCompanyService;
|
|
|
+import cn.com.ctop.common.module.service.IVideoWatermarkTaskService;
|
|
|
+import cn.com.ctop.common.module.utils.Check;
|
|
|
+import cn.com.ctop.common.module.utils.CloudVideoProcessUtil;
|
|
|
+import cn.com.ctop.common.module.utils.ExportExcelUtils;
|
|
|
+import cn.com.ctop.common.module.utils.HttpUtils;
|
|
|
+import cn.com.ctop.common.module.utils.JsonUtil;
|
|
|
+import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
|
|
|
+import cn.com.ctop.common.module.utils.ResultMapUtils;
|
|
|
+import cn.com.ctop.common.module.utils.StatusCode;
|
|
|
+import cn.com.ctop.common.module.utils.StringUtils;
|
|
|
import cn.com.ctop.toutiao.modules.material.entity.ByteDanceCreativeWordPackage;
|
|
|
import cn.com.ctop.toutiao.modules.material.entity.BytedanceVideoSlogenInfo;
|
|
|
import cn.com.ctop.toutiao.modules.material.service.IByteDanceCreativeWordPackageService;
|
|
@@ -17,6 +47,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
import org.apache.shiro.SecurityUtils;
|
|
|
import org.jeecg.common.api.vo.Result;
|
|
|
import org.jeecg.common.system.query.QueryGenerator;
|
|
@@ -25,13 +56,28 @@ import org.jeecg.common.util.DateUtils;
|
|
|
import org.jeecg.modules.ctop.service.IProjectMemberService;
|
|
|
import org.jeecg.modules.system.service.ISysRoleService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.web.bind.annotation.*;
|
|
|
+import org.springframework.web.bind.annotation.DeleteMapping;
|
|
|
+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.RequestBody;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.OutputStream;
|
|
|
import java.net.URLDecoder;
|
|
|
import java.text.ParseException;
|
|
|
-import java.util.*;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
@@ -497,6 +543,155 @@ public class MaterialInfoController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出数据
|
|
|
+ *
|
|
|
+ * @param response
|
|
|
+ */
|
|
|
+ @GetMapping("/v2Excel")
|
|
|
+ public void getExcelReport(HttpServletResponse response, String userId, String type, Integer status, Long productId, String materialName, String code,
|
|
|
+ String startDate, String endDate, String tagCode,
|
|
|
+ Long projectId, String clipId, String shotId, String planId, String leaderName,
|
|
|
+ Integer syncKuaishou, Integer syncBytedance, Integer materialInnovate,
|
|
|
+ @RequestParam(name = "offlineFlag", required = false) Integer offlineFlag) {
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ List<MaterialInfo> list = new ArrayList<>();
|
|
|
+ List<Long> projectIds = new ArrayList<>();
|
|
|
+ if (Check.isNull(userId)) {
|
|
|
+ LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
|
|
+ userId = user.getId();
|
|
|
+ }
|
|
|
+ String roleCode = roleService.getRoleCodeByUserId(userId);
|
|
|
+ if (null == tagCode || "".equals(tagCode.trim())) {
|
|
|
+ tagCode = null;
|
|
|
+ }
|
|
|
+ //管理员、销售查询所有素材
|
|
|
+ if (CtopRoleCodeConstant.COMMON_ROLE_CODE_ADMIN.equals(roleCode) || roleCode.contains("sale")) {
|
|
|
+ if (!Check.isNull(projectId)) {
|
|
|
+ projectIds.add(projectId);
|
|
|
+ } else if (!Check.isNull(productId)) {
|
|
|
+ List<Long> projectIdsByProductId = projectService.getProjectIdsByProductId(productId);
|
|
|
+ projectIds.addAll(projectIdsByProductId);
|
|
|
+ }
|
|
|
+ list = materialInfoService.getExcelListByParams(tagCode, type, status, materialName, projectIds, code, startDate, endDate, null, clipId, shotId, planId, leaderName, offlineFlag, syncKuaishou, syncBytedance, materialInnovate);
|
|
|
+ //运营经理、运营、运营助理
|
|
|
+ } else if ("operator".equals(roleCode) || "kuaishouOperationManager".equals(roleCode) || "operationAssistant".equals(roleCode) || "touTiaoOperationManager".equals(roleCode) || "businessOperation".equals(roleCode)) {
|
|
|
+ if (!Check.isNull(projectId)) {
|
|
|
+ projectIds.add(projectId);
|
|
|
+ } else if (!Check.isNull(productId)) {
|
|
|
+ List<Long> partakeProjectIds = projectMemberService.getProjectIdsByProductId(productId, userId, null, null);
|
|
|
+ List<Long> productProjectIds = projectService.getProjectIdsByProductIdAndNotIn(productId, partakeProjectIds);
|
|
|
+ projectIds.addAll(partakeProjectIds);
|
|
|
+ projectIds.addAll(productProjectIds);
|
|
|
+ } else {
|
|
|
+ List<Long> partakeProjectIds = projectMemberService.getProjectIdsByProductId(null, userId, null, null);
|
|
|
+// List<Long> productProjectIds = projectService.getProjectIdsByProductIdAndNotIn(null, partakeProjectIds);
|
|
|
+ projectIds.addAll(partakeProjectIds);
|
|
|
+// projectIds.addAll(productProjectIds);
|
|
|
+ }
|
|
|
+ if (!Check.isNull(projectIds) && !projectIds.isEmpty()) {
|
|
|
+ list = materialInfoService.getExcelListByParams(tagCode, type, status, materialName, projectIds, code, startDate, endDate, null, clipId, shotId, planId, leaderName, offlineFlag, syncKuaishou, syncBytedance, materialInnovate);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if ("designTeamLeader".equals(roleCode) || "planeLeader".equals(roleCode) || "plane".equals(roleCode) || "plan".equals(roleCode) || "shot".equals(roleCode) || "clip".equals(roleCode)) {
|
|
|
+ //查询自己所在项目下的数据
|
|
|
+ if (!Check.isNull(projectId)) {
|
|
|
+ projectIds.add(projectId);
|
|
|
+ } else if (!Check.isNull(productId)) {
|
|
|
+ projectIds = projectMemberService.getProjectIdsByProductId(productId, userId, null, null);
|
|
|
+ } else {
|
|
|
+ projectIds = projectMemberService.getProjectIdsByProductId(null, userId, null, null);
|
|
|
+ }
|
|
|
+ if (!Check.isNull(projectIds) && !projectIds.isEmpty()) {
|
|
|
+ list = materialInfoService.getExcelListByParams(tagCode, type, status, materialName, projectIds, code, startDate, endDate, null, clipId, shotId, planId, leaderName, offlineFlag, syncKuaishou, syncBytedance, materialInnovate);
|
|
|
+ }
|
|
|
+ } else if ("CompanyManager".equals(roleCode)) {
|
|
|
+ UserCompany userCompany = userCompanyService.getByUserId(userId);
|
|
|
+ if (!Check.isNull(userCompany)) {
|
|
|
+ if (!Check.isNull(projectId)) {
|
|
|
+ projectIds.add(projectId);
|
|
|
+ } else if (!Check.isNull(productId)) {
|
|
|
+ List<Long> partakeProjectIds = projectMemberService.getProjectIdsByProductId(productId, null, userCompany.getCompanyId(), null);
|
|
|
+ projectIds.addAll(partakeProjectIds);
|
|
|
+ } else {
|
|
|
+ projectIds = roleService.getCompanyProjectIds(roleCode, userId);
|
|
|
+ }
|
|
|
+ if (!Check.isNull(projectIds) && !projectIds.isEmpty()) {
|
|
|
+ list = materialInfoService.getExcelListByParams(tagCode, type, status, materialName, projectIds, code, startDate, endDate, null, clipId, shotId, planId, leaderName, offlineFlag, syncKuaishou, syncBytedance, materialInnovate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if ("bytedanceDirector".equals(roleCode)) {
|
|
|
+ UserCompany userCompany = userCompanyService.getByUserId(userId);
|
|
|
+ if (!Check.isNull(userCompany)) {
|
|
|
+ if (!Check.isNull(projectId)) {
|
|
|
+ projectIds.add(projectId);
|
|
|
+ } else if (!Check.isNull(productId)) {
|
|
|
+ List<Long> partakeProjectIds = projectMemberService.getProjectIdsByProductId(productId, null, userCompany.getCompanyId(), "1");
|
|
|
+ projectIds.addAll(partakeProjectIds);
|
|
|
+ } else {
|
|
|
+ projectIds = roleService.getCompanyProjectIds(roleCode, userId);
|
|
|
+ }
|
|
|
+ if (!Check.isNull(projectIds) && !projectIds.isEmpty()) {
|
|
|
+ list = materialInfoService.getExcelListByParams(tagCode, type, status, materialName, projectIds, code, startDate, endDate, null, clipId, shotId, planId, leaderName, offlineFlag, syncKuaishou, syncBytedance, materialInnovate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if ("kuaishouDirector".equals(roleCode)) {
|
|
|
+ UserCompany userCompany = userCompanyService.getByUserId(userId);
|
|
|
+ if (!Check.isNull(userCompany)) {
|
|
|
+ if (!Check.isNull(projectId)) {
|
|
|
+ projectIds.add(projectId);
|
|
|
+ } else if (!Check.isNull(productId)) {
|
|
|
+ List<Long> partakeProjectIds = projectMemberService.getProjectIdsByProductId(productId, userId, userCompany.getCompanyId(), "2");
|
|
|
+ List<Long> productProjectIds = projectService.getProjectIdsByProductIdAndNotIn(productId, partakeProjectIds);
|
|
|
+ projectIds.addAll(partakeProjectIds);
|
|
|
+ projectIds.addAll(productProjectIds);
|
|
|
+ } else {
|
|
|
+ projectIds = roleService.getCompanyProjectIds(roleCode, userId);
|
|
|
+ }
|
|
|
+ if (!Check.isNull(projectIds) && !projectIds.isEmpty()) {
|
|
|
+ list = materialInfoService.getExcelListByParams(tagCode, type, status, materialName, projectIds, code, startDate, endDate, null, clipId, shotId, planId, leaderName, offlineFlag, syncKuaishou, syncBytedance, materialInnovate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //查询自己上传的视频
|
|
|
+ if (!Check.isNull(projectId)) {
|
|
|
+ projectIds.add(projectId);
|
|
|
+ } else if (!Check.isNull(productId)) {
|
|
|
+ projectIds = projectMemberService.getProjectIdsByProductId(productId, userId, null, null);
|
|
|
+ }
|
|
|
+ if (!Check.isNull(projectIds) && !projectIds.isEmpty()) {
|
|
|
+ list = materialInfoService.getExcelListByParams(tagCode, type, status, materialName, projectIds, code, startDate, endDate, userId, clipId, shotId, planId, leaderName, offlineFlag, syncKuaishou, syncBytedance, materialInnovate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!Check.isNull(list)) {
|
|
|
+ try {
|
|
|
+ List<List<Object>> excelList = new ArrayList<>();
|
|
|
+ if (!list.isEmpty()) {
|
|
|
+ for (MaterialInfo info : list) {
|
|
|
+ List<Object> temp = new ArrayList<>();
|
|
|
+ temp.add(info.getMaterialName());
|
|
|
+ temp.add(info.getCode());
|
|
|
+ excelList.add(temp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ OutputStream os = response.getOutputStream();
|
|
|
+ ExportExcelUtils eeu = new ExportExcelUtils();
|
|
|
+ XSSFWorkbook workbook = new XSSFWorkbook();
|
|
|
+ String[] titles = {"素材名称", "唯一标识"};
|
|
|
+ eeu.exportExcelForAttendance(workbook, 0, "素材信息", titles, excelList);
|
|
|
+ HttpUtils.setResponseHeader(response, "clockIn.xlsx");
|
|
|
+ workbook.write(os);
|
|
|
+ os.flush();
|
|
|
+ os.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ log.error(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@ApiOperation(value = "素材信息-分页列表查询", notes = "素材信息-分页列表查询")
|
|
|
@GetMapping(value = "/supplierList")
|
|
|
public Result<IPage<MaterialInfo>> supplierList(MaterialInfo materialInfo,
|