diff --git a/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/biz/ApproveRoleBiz.java b/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/biz/ApproveRoleBiz.java index 055532f3d11cb063d8eedac829fd60b538d851a6..eef4eb3f0ff9a12cff8f5d551071c37193f69dee 100644 --- a/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/biz/ApproveRoleBiz.java +++ b/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/biz/ApproveRoleBiz.java @@ -39,26 +39,57 @@ public class ApproveRoleBiz extends BaseBiz { ApproveRoleVo approveRoleVo = new ApproveRoleVo(); approveRoleVo.setStaffId(staffId); List roleIds = new ArrayList<>(); + List bxztStrs = new ArrayList<>(); if(!"wechat".equals(type)){ roleIds = super.selectList(approveRoleVo); - // 查询页面和审批页面各角色可见范围 - // 如果是负责人,则只能看见自己部门的人员 - if(roleIds!=null && roleIds.size()!=0){ - if("1".equals(roleIds.get(0).getRoleId())){ - query.put("staffId",staffId); + if(roleIds != null && roleIds.size() != 0){ + + for(ApproveRoleVo item:roleIds){ + // 查询页面和审批页面各角色可见范围 + // 如果是负责人,则只能看见自己部门的人员 + String roleId = item.getRoleId(); + String deptCode = item.getDeptCode(); + if("1".equals(roleId)){ + query.put("staffId",staffId); + if("approve".equals(type)){ + query.put("querytype","approve"); + } + query.put("rolebmfzr",true); + }else if("2".equals(roleId)){ + if("approve".equals(type)){ + bxztStrs.add("3"); + query.put("querytype","approve"); + } + query.put("rolezjl",true); + }else if("3".equals(roleId)){ + if("approve".equals(type)){ + bxztStrs.add("4"); + query.put("querytype","approve"); + } + query.put("rolekj",true); + }else if("4".equals(roleId)){ + if("approve".equals(type)){ + bxztStrs.add("6"); + query.put("querytype","approve"); + } + query.put("rolecwzj",true); + } + } + if(bxztStrs.size()!=0){ + query.put("bxzts",bxztStrs); } } }else { //微信设置查询人 + query.put("querytype","wechat"); query.put("userId",staffId); } - /* 审批页面各角色可见范围 审批角色( 1、部门审批负责人 2、总经理 3、会计 4、财务总监 ) 报销状态( 1、已保存 2、已提交 3、已初审 4、已复审 5、驳回 6、已复核 7、已打款 ) 角色-状态 1-2,2-3,3-4,3-6 */ - if("approve".equals(type)){ + /*if("approve".equals(type)){ if("1".equals(roleIds.get(0).getRoleId())){ query.put("bxzt","2"); }else if("2".equals(roleIds.get(0).getRoleId())){ @@ -68,8 +99,7 @@ public class ApproveRoleBiz extends BaseBiz { }else if("4".equals(roleIds.get(0).getRoleId())){ query.put("bxzt","6"); } - - } + }*/ //Query query = new Query(query); Page result = PageHelper.startPage(query.getPageNo(), query.getPageSize()); diff --git a/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/biz/RibsBiz.java b/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/biz/RibsBiz.java index a86df185f24ccd0309c55406a0b4f690691fbc83..2b81af1db035510d029cfd48e9f7a4c066bcfb36 100644 --- a/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/biz/RibsBiz.java +++ b/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/biz/RibsBiz.java @@ -147,26 +147,31 @@ public class RibsBiz extends BaseBiz { //如果报销意见为驳回,这设置为已驳回,直接return 0驳回 1同意 if("0".equals(ribsVo.getBxyj())){ //super.updateSelectiveById(ribsVo); - + String roleId = ""; + String bxztBefore = ribsVo.getBxzt(); + roleId = this.checkRole(bxztBefore); ribsVo.setBxzt("5"); super.updateSelectiveById(ribsVo); this.updateDetailZt(ribsVo); ApproveRoleVo approveRoleVo = new ApproveRoleVo(); approveRoleVo.setStaffId(staffId); - List roleIds = approveRoleMapper.select(approveRoleVo); - String roleId = roleIds.get(0).getRoleId(); + //List roleIds = approveRoleMapper.select(approveRoleVo); + // String roleId = roleIds.get(0).getRoleId(); insertHistory(ribsVo,roleId,staffId); //驳回发送消息 - this.sendWxMsg(ribsVo,ribsVo.getBxyj(),staffId); + this.sendWxMsg(ribsVo,ribsVo.getBxyj(),ribsVo.getStaffId()); //super.deleteById(ribsVo.getId()); return; } ApproveRoleVo approveRoleVo = new ApproveRoleVo(); approveRoleVo.setStaffId(staffId); - List roleIds = approveRoleMapper.select(approveRoleVo); - String roleId = roleIds.get(0).getRoleId(); + //List roleIds = approveRoleMapper.select(approveRoleVo); + String roleId = ""; + String bxztBefore = ribsVo.getBxzt(); + roleId = this.checkRole(bxztBefore); + //String roleId = roleIds.get(0).getRoleId(); //1部门负责人审批 if("1".equals(roleId)){ //非特批 设置为复核 @@ -186,7 +191,7 @@ public class RibsBiz extends BaseBiz { }else if("4".equals(roleId)){ ribsVo.setBxzt("7"); } - this.sendWxMsg(ribsVo,ribsVo.getBxyj(),staffId); + this.sendWxMsg(ribsVo,ribsVo.getBxyj(),ribsVo.getStaffId()); /*ApproveRoleVo approveRoleVo = new ApproveRoleVo(); approveRoleVo.setStaffId(ribsVo.getStaffId()); @@ -290,16 +295,31 @@ public class RibsBiz extends BaseBiz { String bxzt = ribsVo.getBxzt(); String je = ribsVo.getFyhj(); String content = ""; - String accessToken = wechatBiz.getAccessToken().getAccessToken(); + String accessToken = wechatBiz.getAccessToken("xx").getAccessToken(); if("0".equals(type)){ - content = "您本月的报销费用已被驳回,驳回原因:\"" + ribsVo.getYj() + "\",详情可登录企业微信-网上报销进行查看。"; + content = "您本月的报销费用(单号:"+ ribsVo.getBxdh() +")已被驳回,驳回原因:\"" + ribsVo.getYj() + "\",详情可登录企业微信-网上报销进行查看。"; } else if("1".equals(type)) { - content = "您本月的报销费用已审批通过,报销金额为"+ je +"元,详情可登录企业微信-网上报销进行查看。"; + content = "您本月的报销费用(单号:"+ ribsVo.getBxdh() +")已审批通过,报销金额为"+ je +"元,详情可登录企业微信-网上报销进行查看。"; } else if("7".equals(bxzt)){ - content = "您本月的报销费用已打款,打款金额为"+ je +"元,请核实,如有问题,可与部门负责人沟通。"; + content = "您本月的报销费用(单号:"+ ribsVo.getBxdh() +")已打款,打款金额为"+ je +"元,请核实,如有问题,可与部门负责人沟通。"; } wechatBiz.sendMsg(accessToken,wxUserId,"","text",content); } + + public String checkRole(String bxztBefore){ + String roleId = ""; + //之前状态为已提交的角色为部门负责人,已初审角色为总经理,已复审角色为会计,已复核角色为财务总监 + if("2".equals(bxztBefore)){ + roleId = "1"; + }else if("3".equals(bxztBefore)){ + roleId = "2"; + }else if("4".equals(bxztBefore)){ + roleId = "3"; + }else if("6".equals(bxztBefore)){ + roleId = "4"; + } + return roleId; + } } diff --git a/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/biz/WechatBiz.java b/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/biz/WechatBiz.java index b6d264fc28972a811d7d78c269bf18aaee1c3e59..b6cd04f2f20cb0cc6192be7e8c8049b25851203f 100644 --- a/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/biz/WechatBiz.java +++ b/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/biz/WechatBiz.java @@ -43,6 +43,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; @@ -86,7 +87,7 @@ public class WechatBiz { * @return */ public MediaUploadInfo mediaUpload(String accessToken,String type,HttpServletRequest request,Map staff,XSSFWorkbook wb,String userId) throws IOException{ - AccessToken xxAccessToken = getAccessToken(); + AccessToken xxAccessToken = getAccessToken("xx"); String xxToken = xxAccessToken.getAccessToken(); MediaUploadInfo mediaUploadInfo = new MediaUploadInfo(); @@ -210,6 +211,9 @@ public class WechatBiz { */ public void excelAndSend(Map map, String type, RibsVo ribsVo, Map staff, HttpServletRequest request) throws IOException{ String accessToken = map.get("accessToken").toString(); + if(StringUtils.isEmpty(accessToken)){ + accessToken = getAccessToken("wb").getAccessToken(); + } String userId = map.get("wxUserId").toString(); String bxdh = ribsVo.getBxdh(); @@ -519,14 +523,18 @@ public class WechatBiz { * * @return */ - public AccessToken getAccessToken() { + public AccessToken getAccessToken(String type) { AccessToken accessToken = new AccessToken(); //判断缓存中是否存在accessToken(有效期60分钟) //将获取的token存入缓存,设置有效期60分钟 String tokenCache = ""; - tokenCache = cacheRedis.get("xxAccessToken"); + if("type".equals("wb")){ + tokenCache = cacheRedis.get("wbAccessToken"); + }else{ + tokenCache = cacheRedis.get("xxAccessToken"); + } //如果存在,则直接返回accessToken if (tokenCache!= null &&!tokenCache.isEmpty()) { return JSONObject.parseObject(tokenCache,AccessToken.class); @@ -535,8 +543,12 @@ public class WechatBiz { //如果不存在调用微信企业号获取accesstoken接口,获取token CloseableHttpClient client = HttpUtil.getHttpClient(); //todo 不同应用使用不同的应用密钥,根据自定义参数state获取 - String corpSecret = Dictionary.XX_CORPSECRET; - + String corpSecret = ""; + if("type".equals("wb")){ + corpSecret = Dictionary.CORPSECRET; + }else{ + corpSecret = Dictionary.XX_CORPSECRET; + } HttpGet request = new HttpGet(String.format(Dictionary.GET_ACCESS_TOKEN_URL, Dictionary.CORPID, corpSecret)); try (CloseableHttpResponse response = client.execute(request)) { @@ -549,7 +561,11 @@ public class WechatBiz { accessToken.setTime(System.currentTimeMillis()); //将获取的token存入缓存,设置有效期60分钟 - cacheRedis.set("xxAccessToken",JSONObject.toJSONString(accessToken),Dictionary.ACCESS_TOKEN_TIMEOUT_MIN); + if("type".equals("wb")){ + cacheRedis.set("wbAccessToken",JSONObject.toJSONString(accessToken),Dictionary.ACCESS_TOKEN_TIMEOUT_MIN); + }else{ + cacheRedis.set("xxAccessToken",JSONObject.toJSONString(accessToken),Dictionary.ACCESS_TOKEN_TIMEOUT_MIN); + } logger.info(accessToken.getAccessToken()); return accessToken; diff --git a/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/controller/RibsController.java b/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/controller/RibsController.java index 351e19ee077f8018739d8dab86ecf1cc0c248ea2..2c4f142db5099643c6a4bf52fd8a1635829ac9bc 100644 --- a/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/controller/RibsController.java +++ b/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/controller/RibsController.java @@ -480,9 +480,9 @@ public class RibsController { //todo 总经理提交是否需要特殊审核 //如果总金额大于50000元,走特批状态 - if(Double.valueOf(ribsVo.getFyhj())>50000){ + /*if(Double.valueOf(ribsVo.getFyhj())>50000){ ribsVo.setTp("1"); - } + }*/ //如果是部门审批人提交,走总经理特批 if(list != null && list.size() != 0){ diff --git a/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/vo/ApproveRoleVo.java b/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/vo/ApproveRoleVo.java index edd658b3b7652869fb01472eb90e0d59c29657d1..d7f1dda516ec412f78bee19caf796a2023c16b1a 100644 --- a/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/vo/ApproveRoleVo.java +++ b/neuray-pm-provider/neuray-pm-provider-wb/src/main/java/com/gitee/neuray/security/wb/ribs/vo/ApproveRoleVo.java @@ -5,6 +5,8 @@ import lombok.Data; import javax.persistence.Column; import javax.persistence.Table; +import javax.persistence.Transient; +import java.util.List; @Data @Table(name = "T_WB_ROLE_USER_DEPT") @@ -28,4 +30,7 @@ public class ApproveRoleVo extends BaseEntity { @Column(name = "DEPT_NAME") private String deptName; + @Transient + private List roleIds; + } diff --git a/neuray-pm-provider/neuray-pm-provider-wb/src/main/resources/mapper/ribs/ApproRoleMapper.xml b/neuray-pm-provider/neuray-pm-provider-wb/src/main/resources/mapper/ribs/ApproRoleMapper.xml index 337580f1502235566ba8bc43a3e6b754470afb4f..352db3283bb915d573516bf3e87355cf1b365340 100644 --- a/neuray-pm-provider/neuray-pm-provider-wb/src/main/resources/mapper/ribs/ApproRoleMapper.xml +++ b/neuray-pm-provider/neuray-pm-provider-wb/src/main/resources/mapper/ribs/ApproRoleMapper.xml @@ -5,85 +5,95 @@