Bläddra i källkod

Merge branch 'test' into V2.0.1

zhaoxian 3 år sedan
förälder
incheckning
16f6ea83e0

+ 238 - 137
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/controller/CwjsPolicyInfoController.java

@@ -20,6 +20,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.entity.SysUser;
@@ -119,87 +120,151 @@ public class CwjsPolicyInfoController {
 	  * @return
 	  */
 	 @GetMapping(value = "/policyApproval")
-	 public Result policyApproval(@RequestParam(name="id",required=true) Integer id,
-	 							@RequestParam(name="type",required=true) Integer type,
-								  @RequestParam(name="userId",required=true) String userId,
+	 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){
-//		LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-		CwjsPolicyInfo cwjsPolicyInfoEntity = cwjsPolicyInfoService.getById(id);
-		 if(cwjsPolicyInfoEntity==null) {
+
+		CwjsPolicyInfo cwjsPolicyInfo = cwjsPolicyInfoService.getById(id);
+		 if(cwjsPolicyInfo==null) {
 			 return Result.error("政策不存在或已被删除,请重新选择要审核的政策。");
 		 }
-		 //获取 主体
-		 Integer companySubjectId= cwjsPolicyInfoEntity.getCompanySubjectId();
+		 //获取 公司主题
+		 Integer companySubjectId = cwjsPolicyInfo.getCompanySubjectId();
+
+		 //当前政策审核人
+		 String approvalUser = cwjsPolicyInfo.getApprovedProgress();
+
+		 //政策所属销售的部门 和 上级
+		 JSONObject examineUser = cwjsPolicyInfoMapper.getUserLeaderAndDirectorByRoleName(cwjsPolicyInfo.getSaleId(),"分公司总经理");
+		 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");
+			}
 
-		 // 当前用户是否是审核人
-		 CwjsCompanyApprovalUser cwjsCompanyApprovalUser = companyApprovalUserMapper.queryByCompanySubjectIdAndUserId(companySubjectId, userId);
+			 cwjsPolicyInfo.setApprovedStatus(1);
+			 cwjsPolicyInfo.setApprovedProgress(firstAudit);
 
-		 if(type == 1){	//审核提交	等于新增的时候
-			 List<CwjsCompanyApprovalUser> cwjsCompanyApprovalUsers = companyApprovalUserMapper.queryByCompanySubjectId(companySubjectId);
-			 if(Check.isNull(cwjsCompanyApprovalUsers)){
-				 return Result.errorMsg("此业务线暂时无审核人员,提交审核无效,请联系开发人员添加此区域主体的审核人员");
-			 }
-			 //普通销售,审核都是1,审核进度的人都是等级为0的审核人id
-			 cwjsCompanyApprovalUsers.forEach(cwjsCompanyApprovalUser2 -> {
-				 if(cwjsCompanyApprovalUser2.getLevel() == 0){
-					 cwjsPolicyInfoEntity.setApprovedStatus(1);
-					 cwjsPolicyInfoEntity.setApprovedProgress(cwjsCompanyApprovalUser2.getApprovalUserId());
-				 }
-			 });
-			 //如果满足 当前用户 是 审核人员 且 创建人
-			 cwjsCompanyApprovalUsers.forEach(cwjsCompanyApprovalUser2 -> {
-				 if(cwjsCompanyApprovalUser2.getApprovalUserId().equalsIgnoreCase(cwjsPolicyInfoEntity.getCreateUserId())
-						 && cwjsCompanyApprovalUser2.getApprovalUserId().equalsIgnoreCase(userId)){
-					 CwjsCompanyApprovalUser approvalUserNext = companyApprovalUserMapper.queryByCompanySubjectIdAndLevel(companySubjectId, cwjsCompanyApprovalUser2.getLevel()+1);
-					 if(Check.isNull(approvalUserNext)){
-						 cwjsPolicyInfoEntity.setApprovedStatus(3);
-						 cwjsPolicyInfoEntity.setApprovedProgress(null);
-					 }else{
-						 cwjsPolicyInfoEntity.setApprovedStatus(2);
-						 cwjsPolicyInfoEntity.setApprovedProgress(approvalUserNext.getApprovalUserId());
-					 }
+
+			 if(StringUtils.equals(firstAudit,"legalAffairs")){
+				 List<JSONObject> legalUserList = cwjsPolicyInfoService.getLegalAffairsUsers();
+				 for (JSONObject jsonObject : legalUserList) {
+					 JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId(jsonObject.getString("userId"));
+					 StringBuilder text = new StringBuilder();
+					 text.append("您有一条销售政策需要审核,该客户为:");
+					 text.append(cwjsPolicyInfo.getCompanyName());
+					 text.append(",请及时登录助手平台-销售政策页面进行审核,谢谢!");
+					 corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
 				 }
-			 });
+			 } else {
+				 JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId(cwjsPolicyInfo.getApprovedProgress());
+				 StringBuilder text = new StringBuilder();
+				 text.append("您有一条销售政策需要审核,该客户为:");
+				 text.append(cwjsPolicyInfo.getCompanyName());
+				 text.append(",请及时登录助手平台-销售政策页面进行审核,谢谢!");
+				 corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
+			 }
+
+			 //添加记录
+			 CwjsPolicyApprovalLog policyApprovalLog = new CwjsPolicyApprovalLog();
+			 policyApprovalLog.setPolicyId(cwjsPolicyInfo.getId());
+			 policyApprovalLog.setCreateUserId(cwjsPolicyInfo.getCreateUserId());
+			 policyApprovalLog.setApprovalStatus(0);
+			 policyApprovalLog.setApprovalContent("提交政策。");
+			 policyApprovalLogService.save(policyApprovalLog);
 
-			 JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId(cwjsPolicyInfoEntity.getApprovedProgress());
-			 StringBuilder text = new StringBuilder();
-			 text.append("您有一条销售政策需要审核,该客户为:");
-			 text.append(cwjsPolicyInfoEntity.getCompanyName());
-			 text.append(",请及时登录助手平台-销售政策页面进行审核,谢谢!");
-			 corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
 		}
-		 if(type == 2){	//审核通过  是不是终审,不是就给当前的下一个人发企业微信
-			 CwjsCompanyApprovalUser nextApprovalUser = null;
-			 //查询 下一个 审核人
-		 	if(!Check.isNull(cwjsCompanyApprovalUser)){
-				nextApprovalUser = companyApprovalUserMapper.queryByCompanySubjectIdAndLevel(companySubjectId, cwjsCompanyApprovalUser.getLevel() + 1);
+		 //审核通过 是不是终审,不是就给当前的下一个人发企业微信
+		 if(type == 2){
+
+			 //第一个审核人 - 法务
+		 	if(approvalUser.equals("legalAffairs")){
+				cwjsPolicyInfo.setApprovedStatus(2);
+				cwjsPolicyInfo.setApprovedProgress(examineUser.getString("leaderId"));	//设置一下个审核人员  上级
+		 	}
+
+
+		 	//第二个审核人 = 上级
+		 	if(approvalUser.equals(examineUser.getString("leaderId"))){
+		 		if(examineUser.getString("departName").contains("渠道")){
+					cwjsPolicyInfo.setApprovedStatus(3);
+					/**
+					 * 终审通过后 添加 起始时间
+					 */
+					reportSettlementService.cwjsPRofit(cwjsPolicyInfo);
+					return Result.successMsg("成功",cwjsPolicyInfo);
+				}
+
+				if(examineUser.getString("departName").contains("销售")){
+					//华北 ---> 自动转老板
+					if (companySubjectId == 1){
+						//查询 是否符合条件
+						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(2);
+						cwjsPolicyInfo.setApprovedProgress(examineUser.getString("directorId"));	//设置一下个审核人员  分公司总经理
+
+					}
+				}
+
 			}
-			 if(Check.isNull(nextApprovalUser)){//没有下一个审核人员,是终审
-				cwjsPolicyInfoEntity.setApprovedStatus(3);
+
+		 	//第三个审核人- 分公司总经理
+			 if(approvalUser.equals(examineUser.getString("directorId"))){
+				 cwjsPolicyInfo.setApprovedStatus(3);
+				 cwjsPolicyInfoService.updateById(cwjsPolicyInfo);
 				 /**
 				  * 终审通过后 添加 起始时间
 				  */
-				 reportSettlementService.cwjsPRofit(cwjsPolicyInfoEntity);
-			}else{	//不是终审
-				cwjsPolicyInfoEntity.setApprovedStatus(2);
-				cwjsPolicyInfoEntity.setApprovedProgress(nextApprovalUser.getApprovalUserId());	//设置一下个人为审核人员
-				 JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId(nextApprovalUser.getApprovalUserId());
-				 StringBuilder text = new StringBuilder();
-				 text.append("您有一条销售政策需要审核,该客户为:");
-				 text.append(cwjsPolicyInfoEntity.getCompanyName());
-				 text.append(",请及时登录助手平台-销售政策页面进行审核,谢谢!");
-				 corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
-			}
+				 reportSettlementService.cwjsPRofit(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());
+
 			CwjsPolicyApprovalLog policyApprovalLog = new CwjsPolicyApprovalLog();
 			policyApprovalLog.setPolicyId(id);
 			policyApprovalLog.setCreateUserId(userId);
 			policyApprovalLog.setApprovalStatus(0);
+			 policyApprovalLog.setApprovalContent("审核通过。");
 			policyApprovalLogService.save(policyApprovalLog);
 
-
 		}
 	 	if(type == 3){	//审核拒绝	给申请人发企业微信
-			cwjsPolicyInfoEntity.setApprovedStatus(4);
+			cwjsPolicyInfo.setApprovedStatus(4);
 			CwjsPolicyApprovalLog policyApprovalLog = new CwjsPolicyApprovalLog();
 			policyApprovalLog.setPolicyId(id);
 			policyApprovalLog.setCreateUserId(userId);
@@ -207,48 +272,26 @@ public class CwjsPolicyInfoController {
 			policyApprovalLog.setApprovalStatus(1);
 			policyApprovalLogService.save(policyApprovalLog);
 
-			JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId(cwjsPolicyInfoEntity.getCreateUserId());
+			JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId(cwjsPolicyInfo.getCreateUserId());
 			StringBuilder text = new StringBuilder();
 			text.append("您有一条销售政策审核未通过,客户为:");
-			text.append(cwjsPolicyInfoEntity.getCompanyName());
+			text.append(cwjsPolicyInfo.getCompanyName());
 			text.append(",请及时登录助手平台-销售政策页面进行政策修改,谢谢!");
 			corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
 		}
 
-	 	//转领导审批 只有审核人是最后一个人的时候 才可以转领导
+	 	//手动-转领导审批 只有审核人是最后一个人的时候 才可以转领导
 	 	if (type == 4){
-			//根据主体查询 最后一个审核人员
-			CwjsCompanyApprovalUser endApprovalUser = companyApprovalUserMapper.getEndApprovalUserBySub(companySubjectId);
-			if (!Check.isNull(endApprovalUser)){
-				if (!userId.equals(endApprovalUser.getApprovalUserId())){
-					return Result.errorMsg("当前所登录用户不是最后一个审核人员,无法转领导审批。");
-				}
+			// 最后一个审核人员
+			if (!approvalUser.equals(examineUser.getString("leaderId")) && !approvalUser.equals(examineUser.getString("directorId"))){
+				return Result.errorMsg("当前审核人不是最后一个审核人员,无法转领导审批。");
 			}
-			cwjsPolicyInfoEntity.setApprovedStatus(2);
-			cwjsPolicyInfoEntity.setApprovedProgress("4aba62011120ac565c7f2b9f8f4aa96b");	//设置 boss 为审核人员
-			JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId("4aba62011120ac565c7f2b9f8f4aa96b");
-			StringBuilder text = new StringBuilder();
-			text.append("您有一条销售政策需要审核,该客户为:");
-			text.append(cwjsPolicyInfoEntity.getCompanyName());
-			text.append(",请及时登录助手平台-销售政策页面进行审核,谢谢!");
-			corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
-
-			CwjsPolicyApprovalLog policyApprovalLog = new CwjsPolicyApprovalLog();
-			policyApprovalLog.setPolicyId(id);
-			policyApprovalLog.setCreateUserId(userId);
-			policyApprovalLog.setApprovalStatus(2);//0-审核通过  1-审核不通过 2-转给领导
-			policyApprovalLog.setApprovalContent(approvalContent);
-			policyApprovalLogService.save(policyApprovalLog);
-
 
+			cwjsPolicyInfoService.automaticConveyBossExamine(cwjsPolicyInfo);
 		}
 
-
-
-
-
-		cwjsPolicyInfoService.updateById(cwjsPolicyInfoEntity);
-	 	return Result.successMsg("成功",cwjsPolicyInfoEntity);
+		cwjsPolicyInfoService.updateById(cwjsPolicyInfo);
+	 	return Result.successMsg("成功",cwjsPolicyInfo);
 	 }
 
 
@@ -278,22 +321,33 @@ public class CwjsPolicyInfoController {
 		if ("admin".equalsIgnoreCase(roleCode) || "finance".equalsIgnoreCase(roleCode) ){
 
 		}else if("saleDirector".equalsIgnoreCase(roleCode)){
-			//总监 看下属
+			//总监看下属
 			userIds = cwjsPolicyInfoService.getAllSubordinate(userId);
+			cwjsPolicyInfo.setSaleIds(userIds);
+
+			//分公司总经理
+		}else if("CompanyManager".equalsIgnoreCase(roleCode)){
+			//自己所属区域
+			//查询 用户 所属区域 公司主题id
+			Integer subjectId = cwjsPolicyInfoService.getCompanySubjectByUserId(userId);
+			cwjsPolicyInfo.setCompanySubjectId(subjectId);
 
-		//法务
+			//法务
 		}else if("legalAffairs".equalsIgnoreCase(roleCode)){
-			//法务 查看 华北
-			cwjsPolicyInfo.setCompanySubjectId(1);
+			//法务 查看
+			cwjsPolicyInfo.setAdvancePay(0); //预付 -否
+			cwjsPolicyInfo.setCustomerFlag(0);// 老客户 -否
+
 		}else {
 			//查询 对应的销售或 助理
 			userIds = cwjsSaleAssistantInfoService.getCwSaleAndAssistantListStr(userId);
 			if (Check.isNull(userIds)){
 				userIds.add(userId);
 			}
-
+			cwjsPolicyInfo.setSaleIds(userIds);
 		}
-		cwjsPolicyInfo.setSaleIds(userIds);
+
+
 
 
         //查询政策
@@ -312,7 +366,7 @@ public class CwjsPolicyInfoController {
 			CwjsPolicyApprovalLog bossContent = policyApprovalLogMapper.getOneByPolicyId(cwjsPolicy.getId(),2);	// 查询 转发领导的 审核意见 最新的一条
 			cwjsPolicy.setTheBossContent(Check.isNull(bossContent) ? "暂无老板审核意见" : bossContent.getApprovalContent());
 
-			CwjsPolicyApprovalLog legalContent = policyApprovalLogMapper.getOneByPolicyId(cwjsPolicy.getId(),11);	// 查询 法务 审核意见 最新的一条
+			CwjsPolicyApprovalLog legalContent = policyApprovalLogMapper.getOneByPolicyLegalInfo(cwjsPolicy.getId());	// 查询 法务 审核意见 最新的一条
 			cwjsPolicy.setLegalAffairsContent(Check.isNull(legalContent) ? "暂无法务审核意见" : legalContent.getApprovalContent());
 
 
@@ -321,12 +375,12 @@ public class CwjsPolicyInfoController {
 			if (cwjsPolicy.getCompanySubjectId() == 1){
 				//查询 该销售 所属的审核人员
 				//华北审核人员 - 法务==>销售总监(销售上级)==>手动转领导/自动转领导
-				directorUserId = cwjsPolicyInfoMapper.getUserLeaderAndDirectorByRoleName(userId,"法务").getString("leaderId");
+				directorUserId = cwjsPolicyInfoMapper.getUserLeaderAndDirectorByRoleName(cwjsPolicy.getSaleId(),"法务").getString("leaderId");
 
 			}else {
 				//查询 该销售 所属的审核人员
 				//华南审核人员 - 销售总监(销售上级) ==> 分公司经理 ==>转领导
-				directorUserId = cwjsPolicyInfoMapper.getUserLeaderAndDirectorByRoleName(userId,"分公司总经理").getString("directorId");
+				directorUserId = cwjsPolicyInfoMapper.getUserLeaderAndDirectorByRoleName(cwjsPolicy.getSaleId(),"分公司总经理").getString("directorId");
 
 			}
 
@@ -356,12 +410,23 @@ public class CwjsPolicyInfoController {
 				}
 			}
 			//待审核
-			if (cwjsPolicy.getApprovedStatus() == 1 || cwjsPolicy.getApprovedStatus() == 2){
+			if (cwjsPolicy.getApprovedStatus() == 1){
+				if(cwjsPolicy.getApprovedProgress().equals(userId)
+						|| (StringUtils.equals(cwjsPolicy.getApprovedProgress(),"legalAffairs") && StringUtils.equals(roleCode,"legalAffairs"))){
+					stringBuilder.append("审核通过").append("|").append("审核拒绝").append("|");
+				}
+
+			}
+			//待审核
+			if (cwjsPolicy.getApprovedStatus() == 2){
 				if(cwjsPolicy.getApprovedProgress().equals(userId)){
 					stringBuilder.append("审核通过").append("|").append("审核拒绝").append("|");
 				}
 			}
 
+
+
+
 			stringBuilder.append("查看").append("|");
 			cwjsPolicy.setOperation(stringBuilder.deleteCharAt(stringBuilder.lastIndexOf("|")).toString());
 
@@ -445,35 +510,26 @@ public class CwjsPolicyInfoController {
 				return  Result.errorMsg("您选择的区域和公司主体系统不支持,请联系开发人员开放");
 			}
 			cwjsPolicyInfo.setCompanySubjectId(companySubjectId);
-			List<CwjsCompanyApprovalUser> cwjsCompanyApprovalUsers = companyApprovalUserMapper.queryByCompanySubjectId(companySubjectId);
-			if(Check.isNull(cwjsCompanyApprovalUsers)){
-				return Result.errorMsg("此业务线暂时无审核人员,提交审核无效,请联系开发人员添加此区域主体的审核人员");
-			}
-			//普通销售,新增都是1,审核进度的人都是等级为0的审核人id
-			cwjsCompanyApprovalUsers.forEach(cwjsCompanyApprovalUser -> {
-				if(cwjsCompanyApprovalUser.getLevel() == 0){
-					cwjsPolicyInfo.setApprovedStatus(1);
-					cwjsPolicyInfo.setApprovedProgress(cwjsCompanyApprovalUser.getApprovalUserId());
-				}
-			});
-			//如果满足有审核人员等于当前创建的人,
-			//当前用户 和 选择的销售(创建人) 相同
-			LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-			if(user.getId().equals(cwjsPolicyInfo.getCreateUserId())){
-				cwjsCompanyApprovalUsers.forEach(cwjsCompanyApprovalUser -> {
-					if(cwjsCompanyApprovalUser.getApprovalUserId().equalsIgnoreCase(cwjsPolicyInfo.getCreateUserId())){
-						CwjsCompanyApprovalUser approvalUserNext = companyApprovalUserMapper.queryByCompanySubjectIdAndLevel(companySubjectId, cwjsCompanyApprovalUser.getLevel()+1);
-						if(Check.isNull(approvalUserNext)){
-							cwjsPolicyInfo.setApprovedStatus(3);
-							cwjsPolicyInfo.setApprovedProgress(null);
-						}else{
-							cwjsPolicyInfo.setApprovedStatus(2);
-							cwjsPolicyInfo.setApprovedProgress(approvalUserNext.getApprovalUserId());
-						}
-					}
-				});
+
+
+			//政策所属销售的部门 和 上级
+			JSONObject examineUser = cwjsPolicyInfoMapper.getUserLeaderAndDirectorByRoleName(cwjsPolicyInfo.getSaleId(),"分公司总经理");
+			String firstAudit = "";//第一次审核人
+
+			//普通销售,新增都是1,审核进度的人都是等级为0的审核人i
+			// 预付-否 && 老客户-否
+			if (cwjsPolicyInfo.getAdvancePay() == 0 && cwjsPolicyInfo.getCustomerFlag() == 0){
+				//第一次审核人 -- 法务(法务有多个用户 无法判断审核人 所以 法务审核人为 角色code legalAffairs 占位)
+				//firstAudit = examineUser.getString("directorId");
+				cwjsPolicyInfo.setApprovedStatus(1);
+				firstAudit = "legalAffairs";
+			}else {
+				//销售的 上级
+				firstAudit = examineUser.getString("leaderId");
 			}
 
+			cwjsPolicyInfo.setApprovedStatus(1);
+			cwjsPolicyInfo.setApprovedProgress(firstAudit);
 
 
 			if(cwjsPolicyInfo.getAdvancePay() == 1){
@@ -496,13 +552,36 @@ public class CwjsPolicyInfoController {
 				policyProductList.add(policyProduct);
 			});
 			cwjsPolicyProductService.saveBatch(policyProductList);
-			//先给first发企业微信 -- 先注释掉
-			JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId(cwjsPolicyInfo.getApprovedProgress());
-			StringBuilder text = new StringBuilder();
-			text.append("您有一条销售政策需要审核,该客户为:");
-			text.append(cwjsPolicyInfo.getCompanyName());
-			text.append(",请及时登录助手平台-销售政策页面进行审核,谢谢!");
-			corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
+
+
+			//发企业微信   法务有两个用户
+			if (StringUtils.equals(cwjsPolicyInfo.getApprovedProgress(),"legalAffairs")){
+				List<JSONObject> legalUserList = cwjsPolicyInfoService.getLegalAffairsUsers();
+				for (JSONObject jsonObject : legalUserList) {
+					JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId(jsonObject.getString("userId"));
+					StringBuilder text = new StringBuilder();
+					text.append("您有一条销售政策需要审核,该客户为:");
+					text.append(cwjsPolicyInfo.getCompanyName());
+					text.append(",请及时登录助手平台-销售政策页面进行审核,谢谢!");
+					corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
+				}
+			}else {
+				JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId(cwjsPolicyInfo.getApprovedProgress());
+				StringBuilder text = new StringBuilder();
+				text.append("您有一条销售政策需要审核,该客户为:");
+				text.append(cwjsPolicyInfo.getCompanyName());
+				text.append(",请及时登录助手平台-销售政策页面进行审核,谢谢!");
+				corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
+			}
+
+			//添加记录
+			CwjsPolicyApprovalLog policyApprovalLog = new CwjsPolicyApprovalLog();
+			policyApprovalLog.setPolicyId(cwjsPolicyInfo.getId());
+			policyApprovalLog.setCreateUserId(cwjsPolicyInfo.getCreateUserId());
+			policyApprovalLog.setApprovalStatus(0);
+			policyApprovalLog.setApprovalContent("创建政策。");
+			policyApprovalLogService.save(policyApprovalLog);
+
 			result.success("添加成功!");
 		} catch (Exception e) {
 			log.error(e.getMessage(),e);
@@ -551,6 +630,15 @@ public class CwjsPolicyInfoController {
 				cwjsPolicyInfo.setDianPayCompanyRebateRate(null);
 			}
 			cwjsPolicyInfoService.updatePolicyInfoById(cwjsPolicyInfo);
+
+			//添加记录
+			CwjsPolicyApprovalLog policyApprovalLog = new CwjsPolicyApprovalLog();
+			policyApprovalLog.setPolicyId(cwjsPolicyInfo.getId());
+			policyApprovalLog.setCreateUserId(cwjsPolicyInfo.getCreateUserId());
+			policyApprovalLog.setApprovalStatus(0);
+			policyApprovalLog.setApprovalContent("修改政策。");
+			policyApprovalLogService.save(policyApprovalLog);
+
 			result.success("修改成功!");
 		}
 		return result;
@@ -738,4 +826,17 @@ public class CwjsPolicyInfoController {
   	return Result.OK();
   }
 
-}
+
+	 @ApiOperation(value="查询政策审核记录", notes="查询政策审核记录")
+	 @GetMapping(value = "/getPolicyApprovalLogByPolicyId")
+	 public Result getPolicyApprovalLogByPolicyId(@RequestParam(name="policyId") Integer policyId) {
+		 return cwjsPolicyInfoService.getPolicyApprovalLogByPolicyId(policyId);
+	 }
+
+
+
+
+
+
+
+ }

+ 5 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/entity/CwjsPolicyInfo.java

@@ -65,6 +65,11 @@ public class CwjsPolicyInfo implements Serializable{
 	@Excel(name = "是否预付:0:否  1:是 ", width = 15)
     @ApiModelProperty(value = "是否预付:0:否  1:是 ")
 	private Integer advancePay;
+
+	/**是否老客户:0:否  1:是 */
+	@Excel(name = "是否老客户:0:否  1:是 ", width = 15)
+	@ApiModelProperty(value = "是否老客户:0:否  1:是 ")
+	private Integer customerFlag;
 	/**账期*/
 	@Excel(name = "账期", width = 15)
     @ApiModelProperty(value = "账期")

+ 7 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/CwjsPolicyApprovalLogMapper.java

@@ -22,4 +22,11 @@ public interface CwjsPolicyApprovalLogMapper extends BaseMapper<CwjsPolicyApprov
      * @return
      */
     CwjsPolicyApprovalLog getOneByPolicyId(@Param("policyId") Integer policyId,@Param("status") Integer status);
+
+    /**
+     * 根据政策id 查询 法务最新审核意见
+     * @param policyId
+     * @return
+     */
+    CwjsPolicyApprovalLog getOneByPolicyLegalInfo(@Param("policyId") Integer policyId);
 }

+ 34 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/CwjsPolicyInfoMapper.java

@@ -1,10 +1,12 @@
 package org.jeecg.ctop.finance.policy.mapper;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
 import com.alibaba.fastjson.JSONObject;
 import org.apache.ibatis.annotations.Param;
+import org.elasticsearch.search.DocValueFormat;
 import org.jeecg.ctop.finance.policy.entity.CwjsPolicyInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -40,6 +42,38 @@ public interface CwjsPolicyInfoMapper extends BaseMapper<CwjsPolicyInfo> {
 
     //查询用户所属公司及区域 以及 上级领导 和 分公司负责人
     JSONObject getUserLeaderAndDirectorByRoleName(@Param("userId") String userId,@Param("roleName") String roleName);
+    JSONObject getUserLeaderByUserId(@Param("userId") String userId);
+
+    /**
+     * 查询 自动转审条件
+     * @param accountingPeriod 账期
+     * @param mediaType 媒体类型 1-头条 2-快手 3-千川 4-UD 5-阿里内广 6-快手服务商 7-磁力金牛 8-头条内广
+     * @param advancePay  是否预付:0:否  1:是'
+     * @param rebateType 返点类型 返点类型:0:返现  1:返货   2:返现+返货 3-服务费
+     * @param rebateRate 返点比例
+     * @return
+     */
+    List<JSONObject> selAutoConveryInfo(@Param("accountingPeriod") String accountingPeriod,
+                                        @Param("mediaType") Integer mediaType,
+                                        @Param("advancePay") Integer advancePay,
+                                        @Param("rebateType") Integer rebateType,
+                                        @Param("rebateRate") BigDecimal rebateRate
+                                        );
+
+
+
+    //查询 政策审核记录
+     List<JSONObject> getPolicyApprovalLogByPolicyId(@Param("policyId") Integer policyId);
+
+     //查询 用户所属公司主题id
+     Integer getCompanySubjectByUserId(@Param("userId") String userId);
+
+     //查询 法务人员
+     List<JSONObject> getLegalAffairsUsers();
+
+
+
+
 
 
 }

+ 21 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/mapper/xml/CwjsPolicyApprovalLogMapper.xml

@@ -11,4 +11,25 @@
         order by create_time desc
         LIMIT 1
     </select>
+
+    <!-- 根据政策id 查询 法务最新审核意见  -->
+    <select id="getOneByPolicyLegalInfo" resultType="org.jeecg.ctop.finance.policy.entity.CwjsPolicyApprovalLog">
+        SELECT
+            l.*
+        FROM
+            ctop_cwjs_policy_approval_log l
+                LEFT JOIN sys_user_role ur ON l.create_user_id = ur.user_id
+                LEFT JOIN sys_role r ON r.id = ur.role_id
+        WHERE
+            r.role_name = '法务'
+          AND l.policy_id = #{policyId}
+        ORDER BY
+            l.create_time DESC
+            LIMIT 1
+    </select>
+
+
+
+
+
 </mapper>

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

@@ -7,7 +7,8 @@
     <select id="selectPolicyInfos" resultType="org.jeecg.ctop.finance.policy.entity.CwjsPolicyInfo">
         select t1.policy_product_name as productName,t2.* ,
                (select u.realname from sys_user u where u.id = t2.sale_id) as saleName,
-                sub.company_subject_name CompanySubjectName
+                sub.company_subject_name CompanySubjectName,
+               sub.area_info as areaInfo
         from ctop_cwjs_policy_product t1
             LEFT JOIN ctop_cwjs_policy_info t2 on t1.policy_id = t2.id
         LEFT JOIN ctop_cwjs_company_subject sub on sub.id = t2.company_subject_id
@@ -18,6 +19,8 @@
         <if test="dianPayCompanyName != null and dianPayCompanyName != ''">and t2.dian_pay_company_name like concat(concat('%',#{dianPayCompanyName}),'%')</if>
         <if test="mediaType != null">and t2.media_type = #{mediaType}</if>
         <if test="rebateType != null">and t2.rebate_type = #{rebateType}</if>
+        <if test="advancePay != null">and t2.advance_pay = #{advancePay}</if>
+        <if test="customerFlag != null">and t2.customer_flag = #{customerFlag}</if>
 
 
         <if test="saleIds != null and saleIds.size() > 0">
@@ -249,7 +252,8 @@
             a.leader_name leaderName,
             b.realname directorName,
             b.role_code directorRoleCode,
-            b.user_id directorId
+            b.user_id directorId,
+            a.depart_name departName
         FROM
             (
                 SELECT
@@ -257,10 +261,12 @@
                     c.company_name,
                     c.nick_name,
                     u.leader_id,
-                    u.leader_name
+                    u.leader_name,
+                    d.depart_name
                 FROM
                     `user_company` c
                         LEFT JOIN sys_user u on c.user_id = u.id
+                        LEFT JOIN sys_depart d on d.org_code = u.org_code
                 WHERE
                     user_id = #{userId}
             ) a LEFT JOIN
@@ -285,6 +291,123 @@
             limit 1
     </select>
 
+    <!-- 查询用户上级 以及所在部门 -->
+    <select id="getUserLeaderByUserId" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+            u.leader_id leaderId,
+            u.leader_name leaderName,
+            d.depart_name  departName
+        FROM
+          sys_user u,
+          sys_depart d
+          where u.org_code= d.org_code
+          and u.id = #{userId}
+            limit 1
+    </select>
+
+
+
+    <!-- 查询 自动转审条件 -->
+    <select id="selAutoConveryInfo" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT * FROM `ctop_cwjs_auto_convery_condition`
+        WHERE 1=1
+        and del_flag = 0
+        and (accounting_period &lt;= #{accountingPeriod})
+        or (
+        media_type = #{mediaType}
+        and advance_pay = #{advancePay}
+        and rebate_type = #{rebateType}
+        and rebate_rate &lt; #{rebateRate}
+        )
+    </select>
+
+
+
+
+    <!-- 查询 政策审核记录 -->
+    <select id="getPolicyApprovalLogByPolicyId" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+            l.id,
+            l.policy_id policyId,
+            l.approval_status approvalStatus,
+            l.approval_content approvalContent,
+            l.create_user_id userId,
+            u.realname userName,
+            l.create_time createTime,
+            r.role_name roleName
+        FROM
+            `jeecg-boot`.`ctop_cwjs_policy_approval_log` l
+            LEFT JOIN `jeecg-boot`.sys_user u ON l.create_user_id = u.id
+            LEFT JOIN `jeecg-boot`.sys_user_role ur ON ur.user_id = u.id
+            LEFT JOIN `jeecg-boot`.sys_role r ON r.id = ur.role_id
+        WHERE
+            l.policy_id = #{policyId}
+        UNION
+        SELECT
+            p.id,
+            p.id policyId,
+            '0' approvalStatus,
+            CASE
+            p.approved_status
+            WHEN 0 THEN '待审核'
+            WHEN 1 THEN '审核中'
+            WHEN 2 THEN '审核通过/拒绝'
+            WHEN 3 THEN '审核完成'
+            WHEN 4 THEN '待提交' ELSE '-'
+            END AS approvalContent,
+            IF
+            ( p.approved_progress = 'legalAffairs', 'legalAffairs', p.approved_progress ) userId,
+            IF
+            ( p.approved_progress = 'legalAffairs', '法务人员', u.realname ) userName,
+            NOW() createTime,
+            r.role_name roleName
+        FROM
+            ctop_cwjs_policy_info p
+            LEFT JOIN `jeecg-boot`.sys_user u ON p.approved_progress = u.id
+            LEFT JOIN `jeecg-boot`.sys_user_role ur ON ur.user_id = u.id
+            LEFT JOIN `jeecg-boot`.sys_role r ON r.id = ur.role_id
+        WHERE
+        p.id = #{policyId}
+    </select>
+
+
+
+
+
+    <!-- 查询 用户所属公司主题id -->
+    <select id="getCompanySubjectByUserId" resultType="java.lang.Integer">
+        SELECT
+            s.id subjectId
+        FROM
+            user_company c
+                LEFT JOIN ctop_cwjs_company_subject s ON c.company_id = s.company_id
+                AND s.del_flag = 0
+        WHERE
+            user_id = #{userId}
+            LIMIT 1
+
+    </select>
+
+
+    <!-- 查询 法务人员 -->
+    <select id="getLegalAffairsUsers" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+            r.role_name,
+            r.role_code,
+            ur.user_id userId,
+            u.realname
+        FROM
+            sys_role r
+                LEFT JOIN sys_user_role ur ON r.id = ur.role_id
+                LEFT JOIN sys_user u ON u.id = ur.user_id
+        WHERE
+            r.role_name = '法务'
+          AND u.`status` = 1
+          AND u.del_flag = 0
+    </select>
+
+
+
 
 
 

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

@@ -115,7 +115,7 @@
         WHERE
         s.del_flag = 0
         <if test="userId !=null and userId != ''">
-            AND s.sale_id = #{userId} OR s.assistant_id = #{userId}
+            AND (s.sale_id = #{userId} OR s.assistant_id = #{userId})
         </if>
         UNION
         SELECT
@@ -125,7 +125,7 @@
         WHERE
         s.del_flag = 0
         <if test="userId !=null and userId != ''">
-            AND s.sale_id = #{userId} OR s.assistant_id = #{userId}
+            AND (s.sale_id = #{userId} OR s.assistant_id = #{userId})
         </if>
             )
     </select>

+ 15 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/policy/service/ICwjsPolicyInfoService.java

@@ -2,6 +2,8 @@ package org.jeecg.ctop.finance.policy.service;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import io.swagger.models.auth.In;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.entity.SysUser;
 import org.jeecg.ctop.finance.policy.entity.CwjsPolicyInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -32,4 +34,17 @@ public interface ICwjsPolicyInfoService extends IService<CwjsPolicyInfo> {
     boolean isExistCwjsPolicyInfo(CwjsPolicyInfo policyInfo);
 
     void updatePolicyInfoById(CwjsPolicyInfo policyInfo);
+
+
+    //自动转老板审核
+    void automaticConveyBossExamine(CwjsPolicyInfo policyInfo);
+
+    Result getPolicyApprovalLogByPolicyId(Integer policyId);
+
+    Integer getCompanySubjectByUserId(String userId);
+
+    List<JSONObject> getLegalAffairsUsers();
+
+
+
 }

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

@@ -1,10 +1,14 @@
 package org.jeecg.ctop.finance.policy.service.impl;
 
+import cn.com.ctop.common.module.mapper.MailLogMapper;
 import cn.com.ctop.common.module.mapper.SysUserMapper;
+import cn.com.ctop.common.module.utils.CorpWexinUtils;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.entity.SysUser;
+import org.jeecg.ctop.finance.policy.entity.CwjsPolicyApprovalLog;
 import org.jeecg.ctop.finance.policy.entity.CwjsPolicyInfo;
 import org.jeecg.ctop.finance.policy.mapper.CwjsPolicyInfoMapper;
 import org.jeecg.ctop.finance.policy.service.ICwjsPolicyInfoService;
@@ -28,6 +32,15 @@ public class CwjsPolicyInfoServiceImpl extends ServiceImpl<CwjsPolicyInfoMapper,
     @Resource
     CwjsPolicyInfoMapper policyInfoMapper;
 
+    @Resource
+    private MailLogMapper mailLogMapper;
+
+    @Resource
+    private CorpWexinUtils corpWexinUtils;
+
+    @Resource
+    private CwjsPolicyApprovalLogServiceImpl policyApprovalLogService;
+
     /**
      *
      * @description: 查看政策列表
@@ -100,6 +113,7 @@ public class CwjsPolicyInfoServiceImpl extends ServiceImpl<CwjsPolicyInfoMapper,
 
     @Autowired
     private SysUserMapper userMapper;
+
     @Override
     public List<JSONObject> getAllSubordinate2(String userId){
         List<SysUser> allList = userMapper.selectAllUser();
@@ -157,4 +171,51 @@ public class CwjsPolicyInfoServiceImpl extends ServiceImpl<CwjsPolicyInfoMapper,
     public void updatePolicyInfoById(CwjsPolicyInfo policyInfo){
         policyInfoMapper.updatePolicyInfoById(policyInfo);
     }
+
+
+
+    @Override
+    public void automaticConveyBossExamine(CwjsPolicyInfo cwjsPolicyInfo) {
+        cwjsPolicyInfo.setApprovedStatus(2);
+        cwjsPolicyInfo.setApprovedProgress("80e747cdea6f41dbbc8cde23046fd4e0");	//设置 boss 为审核人员
+        JSONObject wChatIdByUserId = mailLogMapper.getWChatIdByUserId("80e747cdea6f41dbbc8cde23046fd4e0");
+        StringBuilder text = new StringBuilder();
+        text.append("您有一条销售政策需要审核,该客户为:");
+        text.append(cwjsPolicyInfo.getCompanyName());
+        text.append(",请及时登录助手平台-销售政策页面进行审核,谢谢!");
+        corpWexinUtils.sendMessageByWeChatId(wChatIdByUserId,text.toString());
+        CwjsPolicyApprovalLog policyApprovalLog = new CwjsPolicyApprovalLog();
+        policyApprovalLog.setPolicyId(cwjsPolicyInfo.getId());
+        policyApprovalLog.setCreateUserId(cwjsPolicyInfo.getCreateUserId());
+        policyApprovalLog.setApprovalStatus(2);//0-审核通过  1-审核不通过 2-转给领导
+        policyApprovalLog.setApprovalContent("转审领导。");
+        policyApprovalLogService.save(policyApprovalLog);
+    }
+
+    /**
+     * 查询 政策审核记录
+     * @param policyId
+     * @return
+     */
+    @Override
+    public Result getPolicyApprovalLogByPolicyId(Integer policyId) {
+        List<JSONObject> policyApprovalList = policyInfoMapper.getPolicyApprovalLogByPolicyId(policyId);
+        return Result.successMsg("政策审核记录查询成功",policyApprovalList);
+    }
+
+    @Override
+    public Integer getCompanySubjectByUserId(String userId) {
+        return policyInfoMapper.getCompanySubjectByUserId(userId);
+    }
+
+
+    @Override
+    public List<JSONObject> getLegalAffairsUsers() {
+        return policyInfoMapper.getLegalAffairsUsers();
+    }
+
+
+
+
+
 }

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

@@ -25,9 +25,11 @@ import org.jeecg.common.system.entity.SysUser;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.ctop.finance.policy.entity.CwjsCompanySubject;
+import org.jeecg.ctop.finance.policy.entity.CwjsPolicyApprovalLog;
 import org.jeecg.ctop.finance.policy.entity.CwjsPolicyInfo;
 import org.jeecg.ctop.finance.policy.entity.CwjsPolicyProduct;
 import org.jeecg.ctop.finance.policy.mapper.CwjsCompanySubjectMapper;
+import org.jeecg.ctop.finance.policy.mapper.CwjsPolicyApprovalLogMapper;
 import org.jeecg.ctop.finance.policy.mapper.CwjsPolicyInfoMapper;
 import org.jeecg.ctop.finance.policy.mapper.CwjsPolicyProductMapper;
 import org.jeecg.ctop.finance.policy.service.ICreateSheetService;
@@ -882,6 +884,9 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
     @Resource
     private CwjsPolicyProductMapper cwjsPolicyProductMapper;
 
+    @Resource
+    private CwjsPolicyApprovalLogMapper policyApprovalLogMapper;
+
     @Override
     public void cwjsPRofit(CwjsPolicyInfo cwjsPolicyInfo) {
         // 获取两个日期之间 所有的 时间 年-月-日
@@ -908,6 +913,17 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
                 cwjsProfitMapper.replaceCwjsSlettementProfit(reportList);
             }
         }
+
+        //添加记录
+        CwjsPolicyApprovalLog policyApprovalLog = new CwjsPolicyApprovalLog();
+        policyApprovalLog.setPolicyId(cwjsPolicyInfo.getId());
+        policyApprovalLog.setCreateUserId(cwjsPolicyInfo.getCreateUserId());
+        policyApprovalLog.setApprovalStatus(0);
+        policyApprovalLog.setApprovalContent("终审通过。");
+        policyApprovalLogMapper.insert(policyApprovalLog);
+
+
+
     }
 
     @Resource