ソースを参照

Merge branch 'test' into V2.0.1

zhaoxian 3 年 前
コミット
30cf7065f0
21 ファイル変更701 行追加159 行削除
  1. 2 2
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
  2. 157 126
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/controller/CwjsPolicyInfoController.java
  3. 6 0
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/entity/ExportCwjsPolicyPojo.java
  4. 5 2
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/xml/CwjsPolicyInfoMapper.xml
  5. 1 1
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/service/impl/CwjsPolicyInfoServiceImpl.java
  6. 29 0
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/mapper/IntranetSettlementMapper.java
  7. 73 0
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/mapper/xml/IntranetSettlementMapper.xml
  8. 2 4
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/mapper/xml/SettlementFileInfoMapper.xml
  9. 21 0
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/IntranetSettlementService.java
  10. 29 0
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/serviceImpl/IntranetSettlementServiceImpl.java
  11. 6 1
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/serviceImpl/ReportSettlementServiceImpl.java
  12. 8 5
      jeecg-boot-finance/src/main/resources/application-dev.yml
  13. 5 0
      jeecg-boot-finance/src/main/resources/application-prod.yml
  14. 6 0
      jeecg-boot-finance/src/main/resources/application-test.yml
  15. 14 3
      jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/constants/Check.java
  16. 178 1
      jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/controller/KuaiShouMaterialStareController.java
  17. 4 0
      jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/MaterialStareMapper.java
  18. 21 14
      jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/xml/MaterialStareMapper.xml
  19. 4 0
      jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/MaterialStareService.java
  20. 128 0
      jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/impl/MaterialStareServiceImpl.java
  21. 2 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ProjectMemberController.java

+ 2 - 2
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java

@@ -217,7 +217,7 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/kuaishou/batch/*", "anon");
         filterChainDefinitionMap.put("/dimension/kuaiShouDimensionAccount/*", "anon");
         filterChainDefinitionMap.put("/ai/projectCreate/*", "anon");
-        //filterChainDefinitionMap.put("/cwjsPolicyInfo/**", "anon");
+        filterChainDefinitionMap.put("/cwjsPolicyInfo/**", "anon");
         filterChainDefinitionMap.put("/ruleIndicator/**", "anon");
         filterChainDefinitionMap.put("/explores/**", "anon");
         filterChainDefinitionMap.put("/estimatePeopleNumber/**", "anon");
@@ -227,7 +227,7 @@ public class ShiroConfig {
 
         filterChainDefinitionMap.put("/importPolicyController/importPolicyInit", "anon");
         //filterChainDefinitionMap.put("/settLementController/**", "anon");
-//        filterChainDefinitionMap.put("/settLementFileController/**", "anon");
+        filterChainDefinitionMap.put("/settLementFileController/**", "anon");
 
         filterChainDefinitionMap.put("/ctop/projectMember/**", "anon");
         filterChainDefinitionMap.put("/agent/**", "anon");

+ 157 - 126
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/controller/CwjsPolicyInfoController.java

@@ -128,14 +128,22 @@ public class CwjsPolicyInfoController {
 	  * @param approvalContent 审核内容
 	  * @return
 	  */
-	 @GetMapping(value = "/policyApproval")
-	 public Result policyApproval(@RequestParam(name="id") Integer id,
-	 							@RequestParam(name="type") Integer type,
-								  @RequestParam(name="userId") String userId,
-								@RequestParam(name="approvalContent",required=false) String approvalContent){
-
-		CwjsPolicyInfo cwjsPolicyInfo = cwjsPolicyInfoService.getById(id);
-		 if(cwjsPolicyInfo==null) {
+	 @PostMapping(value = "/policyApproval")
+	 public Result policyApproval(@RequestBody JSONObject object
+	 		//@RequestParam(name="id") Integer id,
+	 							//@RequestParam(name="type") Integer type,
+								  //@RequestParam(name="userId") String userId,
+								//@RequestParam(name="approvalContent",required=false) String approvalContent
+								   ) {
+
+	 	Integer id = object.getInteger("id");
+		 Integer type = object.getInteger("type");
+		 String userId = object.getString("userId");
+		 String approvalContent = object.getString("approvalContent");
+
+
+		 CwjsPolicyInfo cwjsPolicyInfo = cwjsPolicyInfoService.getById(id);
+		 if (cwjsPolicyInfo == null) {
 			 return Result.error("政策不存在或已被删除,请重新选择要审核的政策。");
 		 }
 		 cwjsPolicyInfo.setLoginUserId(userId);
@@ -151,26 +159,32 @@ public class CwjsPolicyInfoController {
 		 String approvalUser = cwjsPolicyInfo.getApprovedProgress();
 
 		 //政策所属销售的部门 和 上级
-		 JSONObject examineUser = cwjsPolicyInfoMapper.getUserLeaderAndDirectorByRoleName(cwjsPolicyInfo.getCreateUserId(),"分公司总经理");
+		 JSONObject examineUser = cwjsPolicyInfoMapper.getUserLeaderAndDirectorByRoleName(cwjsPolicyInfo.getCreateUserId(), "分公司总经理");
 		 String firstAudit = "";//第一次审核人
 
 		 // 提交 - 待审核
 		 //华北==> 法务  其他===> 销售上级
-		 if(type == 1){
-		 	if (cwjsPolicyInfo.getAdvancePay() == 0 && cwjsPolicyInfo.getCustomerFlag() == 0){
-				//第一次审核人 -- 法务(法务有多个用户 无法判断审核人 所以 法务审核人为 角色code legalAffairs 占位)
-				//firstAudit = examineUser.getString("directorId");
-				firstAudit = "legalAffairs";
-			}else {
-				//销售的 上级
-				firstAudit = examineUser.getString("leaderId");
-			}
+		 if (type == 1) {
+			 if (cwjsPolicyInfo.getAdvancePay() == 0 && cwjsPolicyInfo.getCustomerFlag() == 0) {
+				 //第一次审核人 -- 法务(法务有多个用户 无法判断审核人 所以 法务审核人为 角色code legalAffairs 占位)
+				 //firstAudit = examineUser.getString("directorId");
+				 firstAudit = "legalAffairs";
+			 } else {
+				 //查询创建人角色 -- 自己创建的
+				 String createUserRole = roleService.getRoleCodeByUserId(cwjsPolicyInfo.getCreateUserId());
+				 if (StringUtils.equals("saleDirector", createUserRole)) {
+					 firstAudit = cwjsPolicyInfo.getCreateUserId();
+				 } else {
+					 //销售的 上级
+					 firstAudit = examineUser.getString("leaderId");
+				 }
+			 }
 
 			 cwjsPolicyInfo.setApprovedStatus(1);
 			 cwjsPolicyInfo.setApprovedProgress(firstAudit);
 
 
-			 if(StringUtils.equals(firstAudit,"legalAffairs")){
+			 if (StringUtils.equals(firstAudit, "legalAffairs")) {
 				 List<JSONObject> legalUserList = cwjsPolicyInfoService.getLegalAffairsUsers();
 				 for (JSONObject jsonObject : legalUserList) {
 					 JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId(jsonObject.getString("userId"));
@@ -178,7 +192,7 @@ public class CwjsPolicyInfoController {
 					 text.append("您有一条销售政策需要审核,该客户为:");
 					 text.append(cwjsPolicyInfo.getCompanyName());
 					 text.append(",请及时登录助手平台-销售政策页面进行审核,谢谢!");
-					 corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
+					 corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId, text.toString());
 				 }
 			 } else {
 				 JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId(cwjsPolicyInfo.getApprovedProgress());
@@ -186,7 +200,7 @@ public class CwjsPolicyInfoController {
 				 text.append("您有一条销售政策需要审核,该客户为:");
 				 text.append(cwjsPolicyInfo.getCompanyName());
 				 text.append(",请及时登录助手平台-销售政策页面进行审核,谢谢!");
-				 corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
+				 corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId, text.toString());
 			 }
 
 			 //添加记录
@@ -198,69 +212,77 @@ public class CwjsPolicyInfoController {
 			 policyApprovalLog.setCreateTime(new Date());
 			 policyApprovalLogService.save(policyApprovalLog);
 
-		}
+		 }
 		 //审核通过 是不是终审,不是就给当前的下一个人发企业微信
-		 if(type == 2){
+		 if (type == 2) {
+
 
 			 //第一个审核人 - 法务
-		 	if(approvalUser.equals("legalAffairs")){
-				cwjsPolicyInfo.setApprovedStatus(1);
-				cwjsPolicyInfo.setApprovedProgress(examineUser.getString("leaderId"));	//设置一下个审核人员  上级
-		 	}
+			 if (approvalUser.equals("legalAffairs")) {
+				 //查询创建人角色 -- 自己创建的
+				 String createUserRole = roleService.getRoleCodeByUserId(cwjsPolicyInfo.getCreateUserId());
+				 if (StringUtils.equals("saleDirector", createUserRole)) {
+					 cwjsPolicyInfo.setApprovedStatus(1);
+					 cwjsPolicyInfo.setApprovedProgress(cwjsPolicyInfo.getCreateUserId());    //设置一下个审核人员  是自己
+				 } else {
+					 cwjsPolicyInfo.setApprovedStatus(1);
+					 cwjsPolicyInfo.setApprovedProgress(examineUser.getString("leaderId"));    //设置一下个审核人员  上级
+				 }
+			 }
 
 
 			 //查询审核人角色
 			 String roleCode = roleService.getRoleCodeByUserId(approvalUser);
 
-		 	//第二个审核人 = 上级
-		 	//if(approvalUser.equals(examineUser.getString("leaderId"))){
-		 	if(StringUtils.equals("saleDirector",roleCode)){//审核人角色为销售总监
-		 		if(examineUser.getString("departName").contains("渠道")){
-					cwjsPolicyInfo.setApprovedStatus(3);
-					cwjsPolicyInfoService.updateById(cwjsPolicyInfo);
-
-					/**
-					 * 终审通过后 添加 起始时间
-					 */
-					reportSettlementService.cwjsPRofit(cwjsPolicyInfo);
-					return Result.successMsg("审核通过",cwjsPolicyInfo);
-				}
-
-				if(examineUser.getString("departName").contains("销售")){
-					//华北 ---> 自动转老板
-					if (cwjsPolicyInfo.getCompanyId().equals("d57fecdcf7a94d009736d9c850731582")){
-						//查询 是否符合条件
-						List<JSONObject> autoConveryList = cwjsPolicyInfoMapper.selAutoConveryInfo(cwjsPolicyInfo.getAccountingPeriod(),cwjsPolicyInfo.getMediaType(),
-								cwjsPolicyInfo.getAdvancePay(),cwjsPolicyInfo.getRebateType(),cwjsPolicyInfo.getRebateRate());
-						if (!Check.isNull(autoConveryList)){
-							cwjsPolicyInfoService.automaticConveyBossExamine(cwjsPolicyInfo);
-							cwjsPolicyInfoService.updateById(cwjsPolicyInfo);
-							log.info("-----自动转老板");
-							return Result.successMsg("审核通过",cwjsPolicyInfo);
-						}else {
-							//结束
-							cwjsPolicyInfo.setApprovedStatus(3);
-							cwjsPolicyInfoService.updateById(cwjsPolicyInfo);
-
-							/**
-							 * 终审通过后 添加 起始时间
-							 */
-							reportSettlementService.cwjsPRofit(cwjsPolicyInfo);
-							return Result.successMsg("审核通过",cwjsPolicyInfo);
-
-						}
-					}else {
-						// 下一步审核 分公司总经理
-						cwjsPolicyInfo.setApprovedStatus(1);
-						cwjsPolicyInfo.setApprovedProgress(examineUser.getString("directorId"));	//设置一下个审核人员  分公司总经理
+			 //第二个审核人 = 上级 = 销售总监
+			 //if(approvalUser.equals(examineUser.getString("leaderId"))){
+			 if (StringUtils.equals("saleDirector", roleCode)) {//审核人角色为销售总监
+				 if (examineUser.getString("departName").contains("渠道")) {
+					 cwjsPolicyInfo.setApprovedStatus(3);
+					 cwjsPolicyInfoService.updateById(cwjsPolicyInfo);
+
+					 /**
+					  * 终审通过后 添加 起始时间
+					  */
+					 reportSettlementService.cwjsPRofit(cwjsPolicyInfo);
+					 return Result.successMsg("审核通过", cwjsPolicyInfo);
+				 }
 
-					}
-				}
+				 if (examineUser.getString("departName").contains("销售")) {
+					 //华北 ---> 自动转老板
+					 if (cwjsPolicyInfo.getCompanyId().equals("d57fecdcf7a94d009736d9c850731582")) {
+						 //查询 是否符合条件
+						 List<JSONObject> autoConveryList = cwjsPolicyInfoMapper.selAutoConveryInfo(cwjsPolicyInfo.getAccountingPeriod(), cwjsPolicyInfo.getMediaType(),
+								 cwjsPolicyInfo.getAdvancePay(), cwjsPolicyInfo.getRebateType(), cwjsPolicyInfo.getRebateRate());
+						 if (!Check.isNull(autoConveryList)) {
+							 cwjsPolicyInfoService.automaticConveyBossExamine(cwjsPolicyInfo);
+							 cwjsPolicyInfoService.updateById(cwjsPolicyInfo);
+							 log.info("-----自动转老板");
+							 return Result.successMsg("审核通过", cwjsPolicyInfo);
+						 } else {
+							 //结束
+							 cwjsPolicyInfo.setApprovedStatus(3);
+							 cwjsPolicyInfoService.updateById(cwjsPolicyInfo);
+
+							 /**
+							  * 终审通过后 添加 起始时间
+							  */
+							 reportSettlementService.cwjsPRofit(cwjsPolicyInfo);
+							 return Result.successMsg("审核通过", cwjsPolicyInfo);
+
+						 }
+					 } else {
+						 // 下一步审核 分公司总经理
+						 cwjsPolicyInfo.setApprovedStatus(1);
+						 cwjsPolicyInfo.setApprovedProgress(examineUser.getString("directorId"));    //设置一下个审核人员  分公司总经理
+
+					 }
+				 }
 
-			}
+			 }
 
-		 	//第三个审核人- 分公司总经理
-			 if(approvalUser.equals(examineUser.getString("directorId"))){
+			 //第三个审核人- 分公司总经理
+			 if (approvalUser.equals(examineUser.getString("directorId"))) {
 				 cwjsPolicyInfo.setApprovedStatus(3);
 				 cwjsPolicyInfoService.updateById(cwjsPolicyInfo);
 
@@ -269,11 +291,11 @@ public class CwjsPolicyInfoController {
 				  * 终审通过后 添加 起始时间
 				  */
 				 reportSettlementService.cwjsPRofit(cwjsPolicyInfo);
-				 return Result.successMsg("审核通过",cwjsPolicyInfo);
+				 return Result.successMsg("审核通过", cwjsPolicyInfo);
 			 }
 
 			 //老板
-			 if (approvalUser.equals(userId) && userId.equals("80e747cdea6f41dbbc8cde23046fd4e0")){
+			 if (approvalUser.equals(userId) && userId.equals("80e747cdea6f41dbbc8cde23046fd4e0")) {
 				 cwjsPolicyInfo.setApprovedStatus(3);
 				 cwjsPolicyInfoService.updateById(cwjsPolicyInfo);
 
@@ -281,60 +303,54 @@ public class CwjsPolicyInfoController {
 				  * 终审通过后 添加 起始时间
 				  */
 				 reportSettlementService.cwjsPRofit(cwjsPolicyInfo);
-				 return Result.successMsg("审核通过",cwjsPolicyInfo);
+				 return Result.successMsg("审核通过", cwjsPolicyInfo);
 			 }
 
 
-
-
 			 JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId(cwjsPolicyInfo.getApprovedProgress());
 			 StringBuilder text = new StringBuilder();
 			 text.append("您有一条销售政策需要审核,该客户为:");
 			 text.append(cwjsPolicyInfo.getCompanyName());
 			 text.append(",请及时登录助手平台-销售政策页面进行审核,谢谢!");
-			 corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
+			 corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId, text.toString());
 
-			CwjsPolicyApprovalLog policyApprovalLog = new CwjsPolicyApprovalLog();
-			policyApprovalLog.setPolicyId(id);
-			policyApprovalLog.setCreateUserId(userId);
-			policyApprovalLog.setApprovalStatus(0);
+			 CwjsPolicyApprovalLog policyApprovalLog = new CwjsPolicyApprovalLog();
+			 policyApprovalLog.setPolicyId(id);
+			 policyApprovalLog.setCreateUserId(userId);
+			 policyApprovalLog.setApprovalStatus(0);
 			 policyApprovalLog.setApprovalContent(Check.isNull(approvalContent) ? "审核通过" : approvalContent);
 			 policyApprovalLog.setCreateTime(new Date());
-			policyApprovalLogService.save(policyApprovalLog);
+			 policyApprovalLogService.save(policyApprovalLog);
 
-		}
-	 	if(type == 3){	//审核拒绝	给申请人发企业微信
-			cwjsPolicyInfo.setApprovedStatus(4);
+		 }
+		 if (type == 3) {    //审核拒绝	给申请人发企业微信
+			 cwjsPolicyInfo.setApprovedStatus(4);
 
-			CwjsPolicyApprovalLog policyApprovalLog = new CwjsPolicyApprovalLog();
-			policyApprovalLog.setApprovalStatus(1);
-			policyApprovalLog.setPolicyId(id);
-			policyApprovalLog.setCreateUserId(userId);
-			policyApprovalLog.setApprovalContent(Check.isNull(approvalContent) ? "审核拒绝" : approvalContent);
-			policyApprovalLog.setCreateTime(new Date());
-			policyApprovalLogService.save(policyApprovalLog);
+			 CwjsPolicyApprovalLog policyApprovalLog = new CwjsPolicyApprovalLog();
+			 policyApprovalLog.setApprovalStatus(1);
+			 policyApprovalLog.setPolicyId(id);
+			 policyApprovalLog.setCreateUserId(userId);
+			 policyApprovalLog.setApprovalContent(Check.isNull(approvalContent) ? "审核拒绝" : approvalContent);
+			 policyApprovalLog.setCreateTime(new Date());
+			 policyApprovalLogService.save(policyApprovalLog);
 
 
-			JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId(cwjsPolicyInfo.getCreateUserId());
-			StringBuilder text = new StringBuilder();
-			text.append("您有一条销售政策审核未通过,客户为:");
-			text.append(cwjsPolicyInfo.getCompanyName());
-			text.append(",请及时登录助手平台-销售政策页面进行政策修改,谢谢!");
-			corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
-		}
+			 JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId(cwjsPolicyInfo.getCreateUserId());
+			 StringBuilder text = new StringBuilder();
+			 text.append("您有一条销售政策审核未通过,客户为:");
+			 text.append(cwjsPolicyInfo.getCompanyName());
+			 text.append(",请及时登录助手平台-销售政策页面进行政策修改,谢谢!");
+			 corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId, text.toString());
+		 }
 
-	 	//手动-转领导审批 只有审核人是最后一个人的时候 才可以转领导
-	 	if (type == 4){
-			// 最后一个审核人员
-			if (!approvalUser.equals(examineUser.getString("leaderId")) && !approvalUser.equals(examineUser.getString("directorId"))){
-				return Result.errorMsg("当前审核人不是最后一个审核人员,无法转领导审批。");
-			}
+		 //手动-转领导审批 只有审核人是最后一个人的时候 才可以转领导
+		 if (type == 4) {
+			 cwjsPolicyInfoService.automaticConveyBossExamine(cwjsPolicyInfo);
+		 }
 
-			cwjsPolicyInfoService.automaticConveyBossExamine(cwjsPolicyInfo);
-		}
+			 cwjsPolicyInfoService.updateById(cwjsPolicyInfo);
+			 return Result.successMsg(type == 3 ? "审核拒绝" : "审核通过", cwjsPolicyInfo);
 
-		cwjsPolicyInfoService.updateById(cwjsPolicyInfo);
-	 	return Result.successMsg(type ==  3 ? "审核拒绝" : "审核通过",cwjsPolicyInfo);
 	 }
 
 
@@ -428,16 +444,25 @@ public class CwjsPolicyInfoController {
 
 			JSONObject examineUser = new JSONObject();
 			String directorUserId = "";
+
+			//角色
+			String createRoleCode = roleService.getRoleCodeByUserId(cwjsPolicy.getCreateUserId());
+
 			//主体为1 为 华北
 			if (cwjsPolicy.getCompanyId().equals("d57fecdcf7a94d009736d9c850731582")){
 				//查询 该销售 所属的审核人员
 				//华北审核人员 - 法务==>销售总监(销售上级)==>手动转领导/自动转领导
-				examineUser = cwjsPolicyInfoMapper.getUserLeaderAndDirectorByRoleName(cwjsPolicy.getSaleId(),"法务");
-				directorUserId = examineUser.getString("leaderId");
+				examineUser = cwjsPolicyInfoMapper.getUserLeaderAndDirectorByRoleName(cwjsPolicy.getCreateUserId(),"法务");
+
+				if (StringUtils.equals("saleDirector",createRoleCode)){
+					directorUserId  = cwjsPolicy.getCreateUserId();
+				}else {
+					directorUserId = examineUser.getString("leaderId");
+				}
 			}else {
 				//查询 该销售 所属的审核人员
 				//华南审核人员 - 销售总监(销售上级) ==> 分公司经理 ==>转领导
-				examineUser = cwjsPolicyInfoMapper.getUserLeaderAndDirectorByRoleName(cwjsPolicy.getSaleId(),"分公司总经理");
+				examineUser = cwjsPolicyInfoMapper.getUserLeaderAndDirectorByRoleName(cwjsPolicy.getCreateUserId(),"分公司总经理");
 				directorUserId = examineUser.getString("directorId");
 
 			}
@@ -595,8 +620,8 @@ public class CwjsPolicyInfoController {
 			cwjsPolicyInfo.setCompanySubjectId(companySubjectId);
 
 
-			//查询销售角色
-			String roleCode = roleService.getRoleCodeByUserId(cwjsPolicyInfo.getSaleId());
+			//查询创建人角色
+			String roleCode = roleService.getRoleCodeByUserId(cwjsPolicyInfo.getCreateUserId());
 
 
 			//政策所属销售的部门 和 上级
@@ -611,10 +636,10 @@ public class CwjsPolicyInfoController {
 				cwjsPolicyInfo.setApprovedStatus(1);
 				firstAudit = "legalAffairs";
 
-				//助理给销售总监创建
-			}else if (StringUtils.equals(cwjsPolicyInfo.getSaleId(),cwjsPolicyInfo.getCreateUserId()) && StringUtils.equals(roleCode,"saleDirector")){
-				//审核人是 销售的 上级
-				firstAudit = examineUser.getString("leaderId");
+				//销售总监创建
+			}else if (StringUtils.equals(roleCode,"saleDirector")){
+				//审核人是 自己
+				firstAudit = cwjsPolicyInfo.getCreateUserId();
 			}else {
 				//创建人的 上级
 				firstAudit = examineUser.getString("leaderId");
@@ -957,7 +982,6 @@ public class CwjsPolicyInfoController {
 			 } else {
 				 cwjsPolicyInfo.setStatusList(Arrays.asList(cwjsPolicyInfo.getApprovedStatus()));
 			 }
-
 			 //查询政策
 			 List<CwjsPolicyInfo> cwjsPolicyInfoList = cwjsPolicyInfoService.queryPageList(cwjsPolicyInfo);
 			 if (Check.isNull(cwjsPolicyInfoList)) {
@@ -972,12 +996,19 @@ public class CwjsPolicyInfoController {
 				 exportCwjsPolicyPojo.setRebateType(ExportCwjsPolicyPojo.getRebateTypeStr(vo.getRebateType()));
 				 exportCwjsPolicyPojo.setRebateRate(vo.getRebateRate()+"%");
 				 exportCwjsPolicyPojo.setDianPayCompanyRebateRate(Check.isNull(vo.getDianPayCompanyRebateRate()) ? "" : vo.getDianPayCompanyRebateRate()+"%");
-				 exportCwjsPolicyPojo.setPromotionType(vo.getPromotionType() == 0 ? "自运营" : "代运营");
-				 exportCwjsPolicyPojo.setAdvancePay(vo.getAdvancePay() == 0 ?  "否" : "是");
-				 exportCwjsPolicyPojo.setIsDianPay(vo.getIsDianPay() == 0 ?  "否" : "是");
-				 exportCwjsPolicyPojo.setCustomerFlag(vo.getCustomerFlag() == 0 ?  "否" : "是");
+				 exportCwjsPolicyPojo.setPromotionType(Check.isNull(vo.getPromotionType()) ? "-" : vo.getPromotionType() == 0 ? "自运营" : "代运营");
+				 exportCwjsPolicyPojo.setAdvancePay(Check.isNull(vo.getAdvancePay()) ?  "-" : vo.getAdvancePay() == 0 ?  "否" : "是");
+				 exportCwjsPolicyPojo.setIsDianPay(Check.isNull(vo.getIsDianPay()) ?  "-" : vo.getIsDianPay() == 0 ?  "否" : "是");
+				 exportCwjsPolicyPojo.setCustomerFlag(Check.isNull(vo.getCustomerFlag()) ?  "-" : vo.getCustomerFlag() == 0 ?  "否" : "是");
 				 exportCwjsPolicyPojo.setCreateTime(DateUtils.dateToStringTime(vo.getCreateTime()));
-				 exportCwjsPolicyPojo.setProductName(StringUtils.strip(vo.getPolicyProductName().toString(),"[]"));
+				 exportCwjsPolicyPojo.setProductName(StringUtils.strip(vo.getPolicyProductName().toString(),"[]").replace("\"",""));
+
+				 CwjsPolicyApprovalLog bossContent = policyApprovalLogMapper.getBossOneByPolicyId(vo.getId());	// 查询 老板审核意见 最新的一条
+				 exportCwjsPolicyPojo.setBossContent(Check.isNull(bossContent) ?  "-" : StringUtils.equals("终审通过",bossContent.getApprovalContent()) ? "-" : bossContent.getApprovalContent());
+
+				 CwjsPolicyApprovalLog legalContent = policyApprovalLogMapper.getOneByPolicyLegalInfo(vo.getId());	// 查询 法务 审核意见 最新的一条
+				 exportCwjsPolicyPojo.setLegalAffairsContent(Check.isNull(legalContent) ? "-" : legalContent.getApprovalContent());
+
 				 resultList.add(exportCwjsPolicyPojo);
 			 }
 			 Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("政策内容", "销售政策"), ExportCwjsPolicyPojo.class, resultList);

+ 6 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/entity/ExportCwjsPolicyPojo.java

@@ -109,6 +109,9 @@ public class ExportCwjsPolicyPojo implements Serializable{
 	@Excel(name = "法务审核意见", width = 15)
 	private String legalAffairsContent;
 
+	@Excel(name = "老板审核意见", width = 15)
+	private String bossContent;
+
 
 
 
@@ -168,6 +171,9 @@ public class ExportCwjsPolicyPojo implements Serializable{
 			case 4:
 				statusStr = "审核拒绝";
 				break;
+			case 5:
+				statusStr = "已作废";
+				break;
 		}
 		return statusStr;
 	}

+ 5 - 2
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/xml/CwjsPolicyInfoMapper.xml

@@ -388,9 +388,12 @@
                         WHEN 3 THEN
                             '审核完成'
                         WHEN 4 THEN
-                            '待提交' ELSE '-'
+                            '待提交'
+                        WHEN 5 THEN
+                            '作废'
+                        ELSE '-'
                         END AS approvalContent,
-                    IF(p.approved_status = 4 , p.create_user_id, p.approved_progress ) userId,
+                    IF(p.approved_status = 4 or p.approved_status= 5, p.create_user_id, p.approved_progress ) userId,
                     p.create_user_name,
                     '' createTime
                 FROM

+ 1 - 1
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/service/impl/CwjsPolicyInfoServiceImpl.java

@@ -252,7 +252,7 @@ public class CwjsPolicyInfoServiceImpl extends ServiceImpl<CwjsPolicyInfoMapper,
         //修改政策状态及作废原因
         policyInfoMapper.updatePolicyToVOidById(policyId,delReason);
         //删除政策关联的产品信息
-        cwjsPolicyProductMapper.deleteProductsByPolicyId(Integer.valueOf(policyId));
+        //cwjsPolicyProductMapper.deleteProductsByPolicyId(Integer.valueOf(policyId));
         //删除该政策利润表记录
         cwjsProfitMapper.delSlettmentReportByPolicyId(policyId);
 

+ 29 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/mapper/IntranetSettlementMapper.java

@@ -0,0 +1,29 @@
+package org.jeecg.ctop.finance.settlement.mapper;
+
+import io.lettuce.core.dynamic.annotation.Param;
+import org.jeecg.ctop.finance.settlement.entity.pojo.CtopCwjsSlettementReport;
+import org.jeecg.ctop.finance.settlement.entity.vo.SettlementFileParamsVo;
+import org.jeecg.ctop.finance.settlement.entity.vo.SettlementReportKuaiShouVo;
+
+import java.util.List;
+
+
+/**
+ *
+ * @description:
+ *
+ * @return:
+ * @author: zianY
+ */
+public interface IntranetSettlementMapper {
+
+
+    // 获取快手 结算单 账户 和 代理商 维度
+    List<SettlementReportKuaiShouVo> getTransactionDayKuaiShouAgentAndAccountInrtanet(SettlementFileParamsVo paramsVo);
+
+
+
+
+
+
+}

+ 73 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/mapper/xml/IntranetSettlementMapper.xml

@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.ctop.finance.settlement.mapper.IntranetSettlementMapper">
+
+
+    <!-- 获取快手 账户 日流水信息  代理商 和 账户 维度-->
+    <select id="getTransactionDayKuaiShouAgentAndAccountInrtanet" resultType="org.jeecg.ctop.finance.settlement.entity.vo.SettlementReportKuaiShouVo">
+
+        SELECT
+            *
+        FROM
+            (
+                SELECT
+                    t.*
+                FROM
+                    (
+                        SELECT
+                            stat_date as date,
+                            account_id AS accountId,
+                            total_charged_in_yuan as dailyCharge,
+                            contract_rebate_real_charged_in_yuan as contractRebateRealCharged,
+                            direct_rebate_real_charged_in_yuan as directRebateRealCharged,
+                            ( real_charged_in_yuan + total_rebate_real_charged_in_yuan + credit_real_charged_in_yuan ) realCharged,
+                            account_name AS accountName,
+                            kuaishou_id AS ksId
+                        FROM
+                            application.app_kuaishou_agent_report_d
+                        WHERE
+                            total_charged_in_yuan >0
+                          and account_id = #{accountId}
+                    ) t
+                WHERE
+                    DATE_FORMAT( t.date, '%Y-%m' ) = #{uploadYears}
+                ORDER BY
+                    t.date
+                    LIMIT 31
+            ) a
+                LEFT JOIN (
+                SELECT
+                    t.*,
+                    c.auth_name AS accountNameF,
+                    base.user_id AS ksIdF
+                FROM
+                    (
+                        SELECT
+                            advertiser_id AS accountIdF,
+                            date,
+                            daily_transfer_in as dailyTransferIn,
+                            daily_transfer_out as dailyTransferOut,
+                            balance as balance,
+                            real_recharged as realRecharged,
+                            contract_rebate_real_recharged as contractRebateRealRecharged,
+                            direct_rebate_real_recharged as directRebateRealRecharged
+                        FROM
+                            media_api.kuaishou_advertiser_fund_daily_flows
+                        WHERE
+                            advertiser_id = #{accountId}
+                    ) t
+                        LEFT JOIN `jeecg-boot`.ctop_user_allocation c ON t.accountIdF = c.account_id
+                        LEFT JOIN `jeecg-boot`.ctop_kuaishou_advertiser_base_info base ON base.account_id = t.accountIdF
+                WHERE
+                    DATE_FORMAT( t.date, '%Y-%m' ) = #{uploadYears}
+                ORDER BY
+                    date
+                    LIMIT 31
+            ) b ON a.accountId = b.accountIdF
+                AND a.date = b.date
+            LIMIT 31
+
+    </select>
+
+
+</mapper>

+ 2 - 4
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/mapper/xml/SettlementFileInfoMapper.xml

@@ -102,14 +102,12 @@
         f.product_id AS productId,
         cp.product_name as productName,
         IFNULL(u.project_id, cwjs.project_id ) AS projectId,
-        IFNULL((SELECT project.project_name FROM ctop_user_allocation u,ctop_project project WHERE u.account_id = f.account_id AND project.id = u.project_id),
-        (SELECT project.project_name FROM ctop_project project WHERE project.id = cwjs.project_id LIMIT 1 )
-        ) AS projectName,
+        project.project_name AS projectName,
         IFNULL(cwjs.account_id, f.account_id) AS accountId,
         IFNULL(u.auth_name,cwjs.account_name) AS accountName,
         f.del_flag,
         IFNULL(project.sale_id,cwjs.create_user_id) AS saleUserId,
-        IFNULL((SELECT su.realname FROM sys_user su WHERE f.account_id = u.account_id AND u.project_id = project.id AND project.sale_id = su.id),
+        IFNULL((SELECT su.realname FROM sys_user su WHERE project.sale_id = su.id LIMIT 1),
         (SELECT su.realname FROM sys_user su  LEFT JOIN ctop_cwjs_settlement_info cwjs1  on su.id = cwjs1.create_user_id LIMIT 1 )
         ) as saleUserName,
         f.create_user_id AS operateUserId,

+ 21 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/IntranetSettlementService.java

@@ -0,0 +1,21 @@
+package org.jeecg.ctop.finance.settlement.service;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.ctop.finance.settlement.entity.pojo.CtopCwjsSettlementInfo;
+import org.jeecg.ctop.finance.settlement.entity.vo.SettlementFileParamsVo;
+import org.jeecg.ctop.finance.settlement.entity.vo.SettlementReportKuaiShouVo;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+
+public interface IntranetSettlementService{
+
+    // 获取快手 结算单 账户 和 代理商 维度---内网
+    List<SettlementReportKuaiShouVo> getTransactionDayKuaiShouAgentAndAccountIntranet(SettlementFileParamsVo paramsVo);
+
+}

+ 29 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/serviceImpl/IntranetSettlementServiceImpl.java

@@ -0,0 +1,29 @@
+package org.jeecg.ctop.finance.settlement.service.serviceImpl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import org.jeecg.ctop.finance.settlement.entity.vo.SettlementFileParamsVo;
+import org.jeecg.ctop.finance.settlement.entity.vo.SettlementReportKuaiShouVo;
+import org.jeecg.ctop.finance.settlement.mapper.IntranetSettlementMapper;
+import org.jeecg.ctop.finance.settlement.service.IntranetSettlementService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * Administrator
+ * 2022/5/5
+ **/
+@DS("multi-datasource1")
+@Service
+public class IntranetSettlementServiceImpl implements IntranetSettlementService {
+
+    @Resource
+    private IntranetSettlementMapper intranetSettlementMapper;
+
+
+    @Override
+    public List<SettlementReportKuaiShouVo> getTransactionDayKuaiShouAgentAndAccountIntranet(SettlementFileParamsVo paramsVo) {
+        return intranetSettlementMapper.getTransactionDayKuaiShouAgentAndAccountInrtanet(paramsVo);
+    }
+}

+ 6 - 1
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/serviceImpl/ReportSettlementServiceImpl.java

@@ -345,6 +345,10 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
         return settlementAccountList;
     }
 
+
+    @Resource
+    private IntranetSettlementServiceImpl intranetSettlementService;
+
     @Override
     public Result settlementReportKuaiShou(SettlementFileParamsVo paramsVo, HttpServletResponse response, SysUser user) {
         try {
@@ -375,7 +379,8 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
                 String accountId = accountIdList.get(k);
                 paramsVo.setAccountId(accountId);
 
-                List<SettlementReportKuaiShouVo> settlementList = reportSettlementMapper.getTransactionDayKuaiShouAgentAndAccount(paramsVo);
+               // List<SettlementReportKuaiShouVo> settlementList = reportSettlementMapper.getTransactionDayKuaiShouAgentAndAccount(paramsVo);
+                List<SettlementReportKuaiShouVo> settlementList = intranetSettlementService.getTransactionDayKuaiShouAgentAndAccountIntranet(paramsVo);
                 if (Check.isNull(settlementList)){
                     num++;
                     continue;

+ 8 - 5
jeecg-boot-finance/src/main/resources/application-dev.yml

@@ -109,13 +109,16 @@ spring:
           url: jdbc:mysql://139.186.165.84:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
           username: hcst
           password: hcst@2020
+          #url: jdbc:mysql://139.186.27.96:3390/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+          #username: data
+          #password: hcst@2021
           driver-class-name: com.mysql.jdbc.Driver
           # 多数据源配置
-          #multi-datasource1:
-          #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
-          #username: root
-          #password: root
-          #driver-class-name: com.mysql.cj.jdbc.Driver
+        multi-datasource1:
+          url: jdbc:mysql://192.168.0.184:3390/jeecg-boot?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+          username: hcst
+          password: hcst@2021
+          driver-class-name: com.mysql.cj.jdbc.Driver
   #redis 配置
   redis:
     database: 0

+ 5 - 0
jeecg-boot-finance/src/main/resources/application-prod.yml

@@ -110,6 +110,11 @@ spring:
           username: data
           password: hcst@2021
           driver-class-name: com.mysql.jdbc.Driver
+        multi-datasource1:
+          url: jdbc:mysql://111.206.86.186:3390/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&allowMultiQueries=true&serverTimezone=GMT%2B8
+          username: hcst
+          password: hcst@2021
+          driver-class-name: com.mysql.jdbc.Driver
   #redis 配置
   redis:
     database: 0

+ 6 - 0
jeecg-boot-finance/src/main/resources/application-test.yml

@@ -105,6 +105,12 @@ spring:
           username: hcst
           password: hcst@2020
           driver-class-name: com.mysql.jdbc.Driver
+            # 多数据源配置
+        multi-datasource1:
+          url: jdbc:mysql://192.168.0.184:3390/jeecg-boot?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+          username: hcst
+          password: hcst@2021
+          driver-class-name: com.mysql.cj.jdbc.Driver
   #redis 配置
   redis:
     database: 0

+ 14 - 3
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/constants/Check.java

@@ -3,10 +3,10 @@ package org.jeecg.ctop.material.constants;
 import com.alibaba.fastjson.JSONArray;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.util.ReflectionUtils;
 
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Slf4j
 public class Check {
@@ -63,4 +63,15 @@ public class Check {
     public static boolean isNullMap(Map<?, ?> map) {
         return map == null || map.isEmpty();
     }
+
+
+    public static Map<String, Object> parseObj2Map(Object args) {
+        return Arrays.stream(BeanUtils.getPropertyDescriptors(args.getClass()))
+                .filter(pd -> !"class".equals(pd.getName()))
+                .collect(HashMap::new,
+                        (map, pd) -> map.put(pd.getName(), ReflectionUtils.invokeMethod(pd.getReadMethod(), args)),
+                        HashMap::putAll);
+    }
+
+
 }

+ 178 - 1
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/controller/KuaiShouMaterialStareController.java

@@ -1,16 +1,30 @@
 package org.jeecg.ctop.material.controller;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.google.gson.JsonObject;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.util.CellRangeAddress;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.ctop.material.constants.Check;
+import org.jeecg.ctop.material.entity.vo.KuaiShouOperateAccountVo;
+import org.jeecg.ctop.material.entity.vo.KuaiShouOperateProjectVo;
 import org.jeecg.ctop.material.mapper.MaterialStareMapper;
 import org.jeecg.ctop.material.service.MaterialStareService;
 import org.jeecg.ctop.material.service.impl.MaterialStareServiceImpl;
+import org.jeecgframework.poi.excel.ExcelExportUtil;
+import org.jeecgframework.poi.excel.entity.ExportParams;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedOutputStream;
+import java.io.OutputStream;
+import java.lang.reflect.Field;
+import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -28,6 +42,9 @@ public class KuaiShouMaterialStareController {
     @Autowired
     MaterialStareService materialStareService;
 
+    @Autowired
+    private MaterialStareMapper materialStareMapper;
+
 
     /**
      *
@@ -296,7 +313,7 @@ public class KuaiShouMaterialStareController {
     /**
      * 获取用户下级的项目以及账户信息
      *
-     * @param requestJson
+     * @param
      * @return
      */
     @GetMapping(value = "/participateListByMediaIdAllSubordinate")
@@ -326,6 +343,166 @@ public class KuaiShouMaterialStareController {
 
 
 
+    @GetMapping("/exportKuaiShouOperateProjectInfo")
+    public Result<JSONObject> getKuaiShouOperateProjectInfo(@RequestParam(name="startTime") String startTime,
+                                                            @RequestParam(name="endTime") String endTime,
+                                                            @RequestParam(name="userId") String userId,HttpServletResponse response) {
+
+        try {
+            JSONObject jsonObject = materialStareMapper.getColumnInfo(userId,"101");
+            if (Check.isNull(jsonObject)){
+                return Result.errorMsg("暂无自定义列。");
+            }
+            JSONArray array = jsonObject.getJSONArray("json");
+             //第一步创建workbook
+            HSSFWorkbook wb = new HSSFWorkbook();
+            //设置样式
+            HSSFCellStyle style = wb.createCellStyle();
+            style.setAlignment(HorizontalAlignment.CENTER);//水平居中
+            //设置字体
+            HSSFFont font = wb.createFont();
+            font.setFontName("黑体");
+            font.setFontHeightInPoints((short) 12);//设置字体大小
+            style.setFont(font);
+            //2:创建sheet 设置sheet名称
+            HSSFSheet sheet = wb.createSheet("项目数据");
+            sheet.autoSizeColumn(0,true);
+            //3:添加 第一行单元格
+            HSSFRow row0 = sheet.createRow(0);
+            HSSFCell cell0 = row0.createCell(0);
+            //设置 第一行 表头
+            cell0.setCellValue("项目数据");
+            CellRangeAddress region = new CellRangeAddress(0, 0, 0, array.size()-1);
+            sheet.addMergedRegion(region);//合并行
+            cell0.setCellStyle(style);
+            //4:添加表头2行
+            HSSFRow row = sheet.createRow(1);
+            //5:创建第2行的单元格
+            for (int i = 0;i < array.size(); i++) {
+                JSONObject json = (JSONObject)array.get(i);
+                HSSFCell cell = row.createCell(i);     //第一个单元格
+                cell.setCellValue(json.getString("title"));         //设定值
+                cell.setCellStyle(style);          //内容居中
+            }
+
+            List< KuaiShouOperateProjectVo > resultList = materialStareService.exportKuaiShouOperateProjectInfo(startTime, endTime, userId);
+
+            for (int j = 0; j < resultList.size(); j++) {
+                KuaiShouOperateProjectVo projectVo = resultList.get(j);
+                Map project = Check.parseObj2Map(projectVo);
+
+                //创建行 (表头占0-1行 所以 从 2开始)
+                row = sheet.createRow(j + 2);
+                for (int k =0;k < array.size();k++) {
+                    JSONObject json = (JSONObject)array.get(k);
+                    String fieldName = KuaiShouOperateProjectVo.class.getDeclaredField(json.getString("dataIndex")).getName();
+                    project.get(fieldName);
+                    row.createCell(k).setCellValue(project.get(fieldName).toString());
+                }
+            }
+
+            response.setCharacterEncoding("UTF-8");
+            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+            response.setHeader("Pragma", "no-cache");
+            response.setHeader("Cache-Control", "no-cache");
+            response.setDateHeader("Expires", 0);
+            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("项目列表.xlsx", "UTF-8"));
+            OutputStream output = response.getOutputStream();
+            BufferedOutputStream bufferedOutPut = new BufferedOutputStream(output);
+            wb.write(bufferedOutPut);
+            bufferedOutPut.flush();
+            bufferedOutPut.close();
+            output.close();
+
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+         return null;
+    }
+
+
+    @GetMapping("/exportKuaiShouOperateAccountInfo")
+    public Result<JSONObject> exportKuaiShouOperateAccountInfo(@RequestParam(name="startTime") String startTime,
+                                                            @RequestParam(name="endTime") String endTime,
+                                                            @RequestParam(name="projectId") String projectId,
+                                                            @RequestParam(name="userId") String userId,HttpServletResponse response) {
+
+        try {
+            JSONObject jsonObject = materialStareMapper.getColumnInfo(userId,"102");
+            if (Check.isNull(jsonObject)){
+                return Result.errorMsg("暂无自定义列。");
+            }
+            JSONArray array = jsonObject.getJSONArray("json");
+             //第一步创建workbook
+            HSSFWorkbook wb = new HSSFWorkbook();
+            //设置样式
+            HSSFCellStyle style = wb.createCellStyle();
+            style.setAlignment(HorizontalAlignment.CENTER);//水平居中
+            //设置字体
+            HSSFFont font = wb.createFont();
+            font.setFontName("黑体");
+            font.setFontHeightInPoints((short) 12);//设置字体大小
+            style.setFont(font);
+            //2:创建sheet 设置sheet名称
+            HSSFSheet sheet = wb.createSheet("账户数据");
+            sheet.autoSizeColumn(0,true);
+            //3:添加 第一行单元格
+            HSSFRow row0 = sheet.createRow(0);
+            HSSFCell cell0 = row0.createCell(0);
+            //设置 第一行 表头
+            cell0.setCellValue("账户数据");
+            CellRangeAddress region = new CellRangeAddress(0, 0, 0, array.size()-1);
+            sheet.addMergedRegion(region);//合并行
+            cell0.setCellStyle(style);
+            //4:添加表头2行
+            HSSFRow row = sheet.createRow(1);
+            //5:创建第2行的单元格
+            for (int i = 0;i < array.size(); i++) {
+                JSONObject json = (JSONObject)array.get(i);
+                HSSFCell cell = row.createCell(i);     //第一个单元格
+                cell.setCellValue(json.getString("title"));         //设定值
+                cell.setCellStyle(style);          //内容居中
+
+            }
+
+            List<KuaiShouOperateAccountVo> resultList = materialStareService.exportKuaiShouOperateAccountInfo(startTime, endTime, projectId,userId);
+
+            for (int j = 0; j < resultList.size(); j++) {
+                KuaiShouOperateAccountVo accountVo = resultList.get(j);
+                Map account = Check.parseObj2Map(accountVo);
+
+                //创建行 (表头占0-1行 所以 从 2开始)
+                row = sheet.createRow(j + 2);
+                for (int k =0;k < array.size();k++) {
+                    JSONObject json = (JSONObject)array.get(k);
+                    String fieldName = KuaiShouOperateAccountVo.class.getDeclaredField(json.getString("dataIndex")).getName();
+                    account.get(fieldName);
+                    row.createCell(k).setCellValue(account.get(fieldName).toString());
+                }
+            }
+
+            response.setCharacterEncoding("UTF-8");
+            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+            response.setHeader("Pragma", "no-cache");
+            response.setHeader("Cache-Control", "no-cache");
+            response.setDateHeader("Expires", 0);
+            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("账户列表.xlsx", "UTF-8"));
+            OutputStream output = response.getOutputStream();
+            BufferedOutputStream bufferedOutPut = new BufferedOutputStream(output);
+            wb.write(bufferedOutPut);
+            bufferedOutPut.flush();
+            bufferedOutPut.close();
+            output.close();
+
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+         return null;
+    }
+
+
+
+
 
 
 

+ 4 - 0
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/MaterialStareMapper.java

@@ -100,4 +100,8 @@ public interface MaterialStareMapper {
 
 
 
+
+    JSONObject getColumnInfo(@Param("userId") String userId,@Param("columnType") String columnType);
+
+
 }

+ 21 - 14
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/xml/MaterialStareMapper.xml

@@ -146,11 +146,11 @@
     <!-- 查看 快手 有效 计划 组-->
     <select id="getKuaiShouAccountBaseByUserId" resultType="com.alibaba.fastjson.JSONObject">
         SELECT abi.account_id ,
-        SUM(abi.new_effect_num) as newEffectNum,
-        SUM(abi.new_campaign_num) as newCampaignNum,
-        SUM(abi.new_unit_num) as newUnitNum,
-        SUM( abi.new_video_num ) AS newVideoNum,
-        SUM( abi.new_hot_num ) AS newHotNum
+        IFNULL(SUM(abi.new_effect_num),0) as newEffectNum,
+        IFNULL(SUM(abi.new_campaign_num),0) as newCampaignNum,
+        IFNULL(SUM(abi.new_unit_num),0) as newUnitNum,
+        IFNULL(SUM( abi.new_video_num ),0) AS newVideoNum,
+        IFNULL(SUM( abi.new_hot_num ),0) AS newHotNum
         from application.app_kuaishou_account_base_info_d abi,
         `jeecg-boot`.ctop_user_allocation u
         WHERE abi.account_id = u.account_id
@@ -205,7 +205,7 @@
         ORDER BY SUM( d.charge ) DESC
     </select>
 
-    <!-- 快手 -查询项目数据信息 -->
+    <!-- 快手 -查询项目数据信息 test-->
     <select id="getKuaiShouOperateProjectInfo" resultType="org.jeecg.ctop.material.entity.vo.KuaiShouOperateProjectVo">
         SELECT
         SUM( d.charge ) AS totalCost,
@@ -216,20 +216,20 @@
         COUNT( DISTINCT d.user_id ) AS userNum,
         IFNULL(SUM( d.activation ),0)  AS activation,
         IF(SUM( d.charge ) / SUM( d.activation ) > 0.0001,ROUND( SUM( d.charge ) / SUM( d.activation ), 2 ),0) AS activationPrice,
-        IF(SUM( d.event_next_day_stay ) / SUM( d.activation ) > 0.0001,CONCAT(ROUND(SUM( d.event_next_day_stay ) / SUM( d.activation ) * 100, 2 ),'%'),0)AS leave,
+        IF(SUM( d.event_next_day_stay ) / SUM( d.activation ) > 0.0001,CONCAT(ROUND(SUM( d.event_next_day_stay ) / SUM( d.activation ) * 100, 2 ),'%'),0.00)AS leave,
         IFNULL(SUM( d.event_pay ),0)  AS eventPay,
         IF(SUM( d.charge ) / SUM( d.event_pay ) > 0.0001,ROUND( SUM( d.charge ) / SUM( d.event_pay ), 2 ),0) AS eventPayCost,
-        IF(SUM( d.event_pay ) / ( SUM( d.activation ) + SUM( d.form_count )) > 0.0001,CONCAT(ROUND( SUM( d.event_pay ) / ( SUM( d.activation ) + SUM( d.form_count )) * 100, 2 ),'%'),0) AS eventPayRate,
+        IF(SUM( d.event_pay ) / ( SUM( d.activation ) + SUM( d.form_count )) > 0.0001,CONCAT(ROUND( SUM( d.event_pay ) / ( SUM( d.activation ) + SUM( d.form_count )) * 100, 2 ),'%'),0.00) AS eventPayRate,
         IFNULL(SUM( d.event_new_user_pay ),0)  AS eventNewUserPay,
         IF(SUM( d.charge ) / SUM( d.event_new_user_pay) > 0.0001,ROUND( SUM( d.charge ) / SUM( d.event_new_user_pay ), 2 ),0)AS eventNewUserPayCost,
-        IF(SUM( d.event_new_user_pay ) / ( SUM( d.activation ) + SUM( d.form_count )) > 0.0001 ,CONCAT(ROUND( SUM( d.event_new_user_pay ) / ( SUM( d.activation ) + SUM( d.form_count )) * 100, 2 ),'%'),0 ) AS eventNewUserPayRate,
+        IF(SUM( d.event_new_user_pay ) / ( SUM( d.activation ) + SUM( d.form_count )) > 0.0001 ,CONCAT(ROUND( SUM( d.event_new_user_pay ) / ( SUM( d.activation ) + SUM( d.form_count )) * 100, 2 ),'%'),0.00 ) AS eventNewUserPayRate,
         IFNULL(SUM( d.event_app_invoked ),0)  AS eventAppInvoked,
         IFNULL(ROUND( SUM( d.charge ) / SUM( d.event_app_invoked ), 2 ),0) AS eventAppInvokedCost,
         IFNULL(SUM( d.event_register ),0)  AS eventRegister,
         IFNULL(ROUND( SUM( d.charge ) / SUM( d.event_register ), 2 ),0) AS eventRegisterCost,
         IFNULL(SUM( d.key_action ),0)  AS keyAction,
         IFNULL(ROUND( SUM( d.charge ) / SUM( d.key_action ), 2 ),0) AS keyActionCost,
-        IF(SUM( d.key_action )/ SUM( d.activation ) > 0.0001,CONCAT( ROUND(SUM( d.key_action )/ SUM( d.activation ) * 100 , 2 ), '%' ),0) AS keyActionRate,
+        IF(SUM( d.key_action )/ SUM( d.activation ) > 0.0001,CONCAT( ROUND(SUM( d.key_action )/ SUM( d.activation ) * 100 , 2 ), '%' ),0.00) AS keyActionRate,
         IFNULL(SUM( d.event_pay_purchase_amount_first_day ),0)  AS eventPayPurchaseAmountFirstDay,
         IFNULL(SUM( d.event_pay_first_day_roi ),0)  AS eventPayFirstDayRoi,
         IFNULL(SUM( d.form_count ),0) AS formCount,
@@ -277,20 +277,20 @@
         (SELECT u.balance FROM media_api.kuaishou_advertiser_fund_get u where u.advertiser_id = d.account_id ORDER BY stat_date DESC limit 1 ) as balance,
         IFNULL(SUM( d.activation ),0) AS activation,
         IFNULL(ROUND( SUM( d.charge ) / SUM( d.activation ), 2 ),0) AS activationPrice,
-        IF(SUM( d.event_next_day_stay ) / SUM( d.activation ) > 0.0001,CONCAT(ROUND(SUM( d.event_next_day_stay ) / SUM( d.activation ) * 100, 2 ),'%'),0) AS leave,
+        IF(SUM( d.event_next_day_stay ) / SUM( d.activation ) > 0.0001,CONCAT(ROUND(SUM( d.event_next_day_stay ) / SUM( d.activation ) * 100, 2 ),'%'),0.00) AS leave,
         IFNULL(SUM( d.event_pay ),0) AS eventPay,
         IFNULL(ROUND( SUM( d.charge ) / SUM( d.event_pay ), 2 ),0) AS eventPayCost,
-        IF(SUM( d.event_pay ) / ( SUM( d.activation ) + SUM( d.form_count )) > 0.0001,CONCAT(ROUND( SUM( d.event_pay ) / ( SUM( d.activation ) + SUM( d.form_count )) * 100, 2 ),'%'),0) AS eventPayRate,
+        IF(SUM( d.event_pay ) / ( SUM( d.activation ) + SUM( d.form_count )) > 0.0001,CONCAT(ROUND( SUM( d.event_pay ) / ( SUM( d.activation ) + SUM( d.form_count )) * 100, 2 ),'%'),0.00) AS eventPayRate,
         IFNULL(SUM( d.event_new_user_pay ),0) AS eventNewUserPay,
         IFNULL(ROUND( SUM( d.charge ) / SUM( d.event_new_user_pay ), 2 ),0) AS eventNewUserPayCost,
-        IFNULL(ROUND( SUM( d.event_new_user_pay ) / ( SUM( d.activation ) + SUM( d.form_count )), 2 ),0) AS eventNewUserPayRate,
+        IFNULL(ROUND( SUM( d.event_new_user_pay ) / ( SUM( d.activation ) + SUM( d.form_count )), 2 ),0.00) AS eventNewUserPayRate,
         IFNULL(SUM( d.event_app_invoked ),0) AS eventAppInvoked,
         IFNULL(ROUND( SUM( d.charge ) / SUM( d.event_app_invoked ), 2 ),0) AS eventAppInvokedCost,
         IFNULL(SUM( d.event_register ),0) AS eventRegister,
         IFNULL(ROUND( SUM( d.charge ) / SUM( d.event_register ), 2 ),0) AS eventRegisterCost,
         IFNULL(SUM( d.key_action ),0) AS keyAction,
         IFNULL(ROUND( SUM( d.charge ) / SUM( d.key_action ), 2 ),0) AS keyActionCost,
-        IF(SUM( d.key_action )/ SUM( d.activation ) > 0.0001,CONCAT( ROUND(SUM( d.key_action )/ SUM( d.activation ) * 100 , 2 ), '%' ),0) AS keyActionRate,
+        IF(SUM( d.key_action )/ SUM( d.activation ) > 0.0001,CONCAT( ROUND(SUM( d.key_action )/ SUM( d.activation ) * 100 , 2 ), '%' ),0.00) AS keyActionRate,
         IFNULL(SUM( d.event_pay_purchase_amount_first_day ),0) AS eventPayPurchaseAmountFirstDay,
         IFNULL(SUM( d.event_pay_first_day_roi ),0) AS eventPayFirstDayRoi,
         IFNULL(SUM( d.form_count ),0) AS formCount,
@@ -1160,5 +1160,12 @@
 
 
 
+    <select id="getColumnInfo" resultType="com.alibaba.fastjson.JSONObject">
+
+        select json from ctop_column_load where user_id = #{userId} and column_type = #{columnType}
+
+    </select>
+
+
 
 </mapper>

+ 4 - 0
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/MaterialStareService.java

@@ -2,6 +2,8 @@ package org.jeecg.ctop.material.service;
 
 import com.alibaba.fastjson.JSONObject;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.ctop.material.entity.vo.KuaiShouOperateAccountVo;
+import org.jeecg.ctop.material.entity.vo.KuaiShouOperateProjectVo;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
@@ -25,8 +27,10 @@ public interface MaterialStareService {
     Result exportKuaiShouOperateInfo(String startTime, String endTime, String userId, HttpServletResponse response);
 
     Result getKuaiShouOperateProjectInfo(Integer pageNum,int pageSize,String startTime, String endTime, String userId);
+    List<KuaiShouOperateProjectVo> exportKuaiShouOperateProjectInfo(String startTime, String endTime, String userId);
 
     Result getKuaiShouOperateAccountInfo(Integer pageNum,int pageSize,String startTime, String endTime, String projectId,String userId);
+    List<KuaiShouOperateAccountVo> exportKuaiShouOperateAccountInfo(String startTime, String endTime, String projectId, String userId);
 
     Result getKuaiShouAccountInfo(long accountId);
 

+ 128 - 0
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/impl/MaterialStareServiceImpl.java

@@ -525,6 +525,72 @@ public class MaterialStareServiceImpl implements MaterialStareService {
 
 
 
+    public List<KuaiShouOperateProjectVo> exportKuaiShouOperateProjectInfo(String startTime, String endTime, String userId) {
+        DecimalFormat decimalFormat = new DecimalFormat("0.00%");
+        try {
+            //查询当前人员所有下级
+            Set<String> operatorUserIds = getAffiliateId(userId);
+            //2022-02-15 ==>> 20220215
+            long startDate = Long.valueOf(DateUtils.getDateInteger(startTime));
+            long entDate = Long.valueOf(DateUtils.getDateInteger(endTime));
+
+            //计算环比 时间值 上阶段时间 以及 两个日期之间的 间隔天数
+            Map<String,String> lastTime = DateUtils.getStartEndTime(startTime,endTime);
+            long lastTimeStart = Long.valueOf(DateUtils.getDateInteger(lastTime.get("lastTimeStart")));
+            long lastTimeEnd = Long.valueOf(DateUtils.getDateInteger(lastTime.get("lastTimeEnd")));
+            Integer daysBetween = Integer.valueOf(lastTime.get("daysBetween"))+1;
+
+            //计算同比 时间值 只支持7天
+            long startEqually = new Long("0");
+            long endEqually = new Long("0");
+            if (daysBetween <= 7) {
+                startEqually = DateUtils.getDateInteger(DateUtils.addDayParse(String.valueOf(DateUtils.getDateInteger(startTime)), -7));
+                endEqually = DateUtils.getDateInteger(DateUtils.addDayParse(String.valueOf(DateUtils.getDateInteger(endTime)), -7));
+            }
+
+            //查询运营数据-项目维度
+            List<KuaiShouOperateProjectVo> listOperate = materialStareMapper.getKuaiShouOperateProjectInfo(startDate,entDate,null,operatorUserIds);
+            for (KuaiShouOperateProjectVo projectInfo : listOperate) {
+
+                //查询 有效 上新视频 爆款视频
+                JSONObject newEffect = materialStareMapper.getKuaiShouAccountBaseByUserId(null,projectInfo.getProjectId(),null,startDate,entDate);
+                projectInfo.setNewEffectNum(Check.isNull(newEffect) ? 0 : newEffect.getInteger("newEffectNum"));//有效
+                projectInfo.setNewVideoNum(Check.isNull(newEffect) ? 0 : newEffect.getInteger("newVideoNum"));//上新
+                projectInfo.setNewHotNum(Check.isNull(newEffect) ? 0 : newEffect.getInteger("newHotNum"));//爆款
+
+
+                String projectId = projectInfo.getProjectId();
+                List<KuaiShouOperateProjectVo> projectYearOnYearInfo = materialStareMapper.getKuaiShouOperateProjectInfo(lastTimeStart,lastTimeEnd,projectId,operatorUserIds);
+                //环比 = (当前 - 上阶段 ) / 上阶段
+                String yearOnYear = "0";
+                if (!Check.isNull(projectYearOnYearInfo)){
+                    Double yearOnYearD = (projectInfo.getTotalCost() - projectYearOnYearInfo.get(0).getTotalCost()) / projectYearOnYearInfo.get(0).getTotalCost();
+                    yearOnYear = decimalFormat.format(yearOnYearD);
+                }
+                projectInfo.setYearOnYear(yearOnYear);
+
+                //同比 日期超过 7 天 则不显示
+                String equallyRate = "-";
+                if (daysBetween <= 7){
+                    List<KuaiShouOperateProjectVo> projectEquallyInfo = materialStareMapper.getKuaiShouOperateProjectInfo(startEqually,endEqually,projectId,operatorUserIds);
+                    if (!Check.isNull(projectEquallyInfo)){
+                        Double equallyRateD = (projectInfo.getTotalCost() - projectEquallyInfo.get(0).getTotalCost()) / projectEquallyInfo.get(0).getTotalCost();
+                        equallyRate = decimalFormat.format(equallyRateD);
+                    }
+                }
+                projectInfo.setEquallyRate(equallyRate);
+
+            }
+
+            return listOperate;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+
     /**
      *
      * @description: 运营数据-账户列表
@@ -603,6 +669,68 @@ public class MaterialStareServiceImpl implements MaterialStareService {
         return Result.errorMsg("哎呀,查询失败了。");
     }
 
+    public List<KuaiShouOperateAccountVo> exportKuaiShouOperateAccountInfo(String startTime, String endTime,String projectId, String userId) {
+        DecimalFormat decimalFormat = new DecimalFormat("0.00%");
+        try {
+            //查询当前人员所有下级
+            Set<String> operatorUserIds = getAffiliateId(userId);
+            //2022-02-15 ==>> 20220215
+            long startDate = Long.valueOf(DateUtils.getDateInteger(startTime));
+            long entDate = Long.valueOf(DateUtils.getDateInteger(endTime));
+
+            //计算环比 时间值 上阶段时间 以及 两个日期之间的 间隔天数
+            Map<String,String> lastTime = DateUtils.getStartEndTime(startTime,endTime);
+            long lastTimeStart = Long.valueOf(DateUtils.getDateInteger(lastTime.get("lastTimeStart")));
+            long lastTimeEnd = Long.valueOf(DateUtils.getDateInteger(lastTime.get("lastTimeEnd")));
+            Integer daysBetween = Integer.valueOf(lastTime.get("daysBetween"))+1;
+
+            //计算同比 时间值 只支持7天
+            long startEqually = new Long("0");
+            long endEqually = new Long("0");
+            if (daysBetween <= 7) {
+                startEqually = DateUtils.getDateInteger(DateUtils.addDayParse(String.valueOf(DateUtils.getDateInteger(startTime)), -7));
+                endEqually = DateUtils.getDateInteger(DateUtils.addDayParse(String.valueOf(DateUtils.getDateInteger(endTime)), -7));
+            }
+
+            //查询运营数据-账户 维度
+            List<KuaiShouOperateAccountVo> listOperate = materialStareMapper.getKuaiShouOperateAccountInfo(startDate,entDate,projectId,null,operatorUserIds);
+            for (KuaiShouOperateAccountVo accountInfo : listOperate) {
+
+                //查询 有效 上新视频 爆款视频
+                JSONObject newEffect = materialStareMapper.getKuaiShouAccountBaseByUserId(null,null,String.valueOf(accountInfo.getAccountId()),startDate,entDate);
+                accountInfo.setNewEffectNum(Check.isNull(newEffect) ? 0 : newEffect.getInteger("newEffectNum"));//有效
+                accountInfo.setNewVideoNum(Check.isNull(newEffect) ? 0 : newEffect.getInteger("newVideoNum"));//上新
+                accountInfo.setNewHotNum(Check.isNull(newEffect) ? 0 : newEffect.getInteger("newHotNum"));//爆款
+
+                long accountId = accountInfo.getAccountId();
+                List<KuaiShouOperateAccountVo> accountYearOnYearInfo = materialStareMapper.getKuaiShouOperateAccountInfo(lastTimeStart,lastTimeEnd,projectId,accountId,operatorUserIds);
+                //环比 = (当前 - 上阶段 ) / 上阶段
+                String yearOnYear = "0";
+                if (!Check.isNull(accountYearOnYearInfo)){
+                    Double yearOnYearD = (accountInfo.getTotalCost() - accountYearOnYearInfo.get(0).getTotalCost()) / accountYearOnYearInfo.get(0).getTotalCost();
+                    yearOnYear = decimalFormat.format(yearOnYearD);
+                }
+                accountInfo.setYearOnYear(yearOnYear);
+
+                //同比 日期超过 7 天 则不显示
+                String equallyRate = "-";
+                if (daysBetween <= 7){
+                    List<KuaiShouOperateAccountVo> accountEquallyInfo = materialStareMapper.getKuaiShouOperateAccountInfo(startEqually,endEqually,projectId,accountId,operatorUserIds);
+                    if (!Check.isNull(accountEquallyInfo)){
+                        Double equallyRateD = (accountInfo.getTotalCost() - accountEquallyInfo.get(0).getTotalCost()) / accountEquallyInfo.get(0).getTotalCost();
+                        equallyRate = decimalFormat.format(equallyRateD);
+                    }
+                }
+                accountInfo.setEquallyRate(equallyRate);
+            }
+
+            return listOperate;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return null;
+    }
+
 
     /**
      *

+ 2 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ProjectMemberController.java

@@ -746,7 +746,9 @@ public class ProjectMemberController {
         Result<List<ProjectMember>> result = new Result<>();
         List<Integer> mediaIds = new ArrayList<>();
         mediaIds.add(1);
+        mediaIds.add(2);
         mediaIds.add(3);
+        mediaIds.add(4);
         List<ProjectMember> projectMemberList = projectMemberService.getProjects(mediaIds, userId);
         if (projectMemberList == null) {
             result.error500("未找到对应实体");