Browse Source

测试-修改redisson加锁方式

lwx_dev
erdanergou 3 years ago
parent
commit
b56bf9683c
  1. 16
      src/main/java/com/dreamchaser/depository_manage/config/PublicConfig.java
  2. 18
      src/main/java/com/dreamchaser/depository_manage/config/QyWxConfig.java
  3. 8
      src/main/java/com/dreamchaser/depository_manage/controller/CompanyController.java
  4. 33
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java
  5. 884
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java
  6. 13
      src/main/java/com/dreamchaser/depository_manage/controller/DownLoadFileController.java
  7. 77
      src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java
  8. 35
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java
  9. 76
      src/main/java/com/dreamchaser/depository_manage/controller/PageController.java
  10. 44
      src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java
  11. 158
      src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java
  12. 27
      src/main/java/com/dreamchaser/depository_manage/controller/UserController.java
  13. 6
      src/main/java/com/dreamchaser/depository_manage/entity/UserByPort.java
  14. 22
      src/main/java/com/dreamchaser/depository_manage/intercepter/UserInterceptor.java
  15. 6
      src/main/java/com/dreamchaser/depository_manage/security/pool/AuthenticationTokenPool.java
  16. 16
      src/main/java/com/dreamchaser/depository_manage/security/pool/SendQyWxMessageThreadPool.java
  17. 5
      src/main/java/com/dreamchaser/depository_manage/service/RedisService.java
  18. 25
      src/main/java/com/dreamchaser/depository_manage/service/impl/CompanyServiceImpl.java
  19. 508
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java
  20. 13
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java
  21. 16
      src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java
  22. 128
      src/main/java/com/dreamchaser/depository_manage/service/impl/GroupServiceImpl.java
  23. 69
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java
  24. 3
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialTypeServiceImpl.java
  25. 5
      src/main/java/com/dreamchaser/depository_manage/service/impl/NoticeServiceImpl.java
  26. 23
      src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java
  27. 220
      src/main/java/com/dreamchaser/depository_manage/service/impl/RedisServiceImpl.java
  28. 305
      src/main/java/com/dreamchaser/depository_manage/service/impl/StockTakingServiceImpl.java
  29. 3
      src/main/java/com/dreamchaser/depository_manage/service/impl/UserServiceImpl.java
  30. 27
      src/main/java/com/dreamchaser/depository_manage/utils/LinkInterfaceUtil.java
  31. 5
      src/main/java/com/dreamchaser/depository_manage/utils/Md5Util.java
  32. 8
      src/main/resources/application-test.yml
  33. 3
      src/main/resources/logback-spring.xml
  34. 4
      src/main/resources/redisson-config.yml
  35. 8
      src/test/java/com/dreamchaser/depository_manage/BarChartTest.java
  36. 4
      src/test/java/com/dreamchaser/depository_manage/InventoryLineChartTest.java
  37. 3
      src/test/java/com/dreamchaser/depository_manage/InventorySunburstDataTest.java
  38. 4
      src/test/java/com/dreamchaser/depository_manage/LineChartTest.java
  39. 80
      src/test/java/com/dreamchaser/depository_manage/OtherTest.java
  40. 6
      src/test/java/com/dreamchaser/depository_manage/SunburstChartTest.java

16
src/main/java/com/dreamchaser/depository_manage/config/PortConfig.java → src/main/java/com/dreamchaser/depository_manage/config/PublicConfig.java

@ -3,11 +3,8 @@ package com.dreamchaser.depository_manage.config;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.entity.Administration;
import com.dreamchaser.depository_manage.entity.Post;
import com.dreamchaser.depository_manage.entity.UserByPort; import com.dreamchaser.depository_manage.entity.UserByPort;
import com.dreamchaser.depository_manage.utils.HttpUtils; import com.dreamchaser.depository_manage.utils.HttpUtils;
import com.dreamchaser.depository_manage.utils.LinkInterfaceUtil;
import lombok.Data; import lombok.Data;
import org.apache.http.protocol.HTTP; import org.apache.http.protocol.HTTP;
@ -18,7 +15,7 @@ import java.util.*;
* 用于对接HR系统 * 用于对接HR系统
*/ */
@Data @Data
public class PortConfig { public class PublicConfig {
// 部署数据库 depository NhE47edekBHxhjYk // 部署数据库 depository NhE47edekBHxhjYk
@ -30,7 +27,12 @@ public class PortConfig {
// 高权限部门列表 // 高权限部门列表
public static List<Integer> roleAdminorgList = Arrays.asList(361,102,268); public static List<Integer> roleAdminorgList = Arrays.asList(361,102,268);
// 定义登录存储在redis中的前缀
public static String LoginRedisPrefix = "HXGK_GO_ZhixingCollege:ScanCode:Authentication:LoginApi_dev_";
// 定义存储在redis中的用户信息
public static String userInfoRedisPrefix = "HXGK_GO_ZhixingCollege:ScanCode:Authentication:UserCont_dev_";
// 定义redis加锁的名称
public static String redis_Lock_name = "Wms_redis_lock";
/** /**
* 获取相应部门的部门负责人 * 获取相应部门的部门负责人
@ -39,7 +41,7 @@ public class PortConfig {
*/ */
public static List<UserByPort> findDepartmentHeadByUser(Integer maindeparment,UserByPort userToken){ public static List<UserByPort> findDepartmentHeadByUser(Integer maindeparment,UserByPort userToken){
List<UserByPort> userByPortList = new ArrayList<>(); List<UserByPort> userByPortList = new ArrayList<>();
String url = PortConfig.external_url + "/staff/archiveslist"; String url = PublicConfig.external_url + "/staff/archiveslist";
Map<String,Object> map = new HashMap<>(); Map<String,Object> map = new HashMap<>();
map.put("adminorg",maindeparment); map.put("adminorg",maindeparment);
map.put("role",""); map.put("role","");
@ -128,7 +130,7 @@ public class PortConfig {
* @return * @return
*/ */
public static UserByPort findUserByPortByNumber(String number){ public static UserByPort findUserByPortByNumber(String number){
String url = PortConfig.external_url + "/staff/archiveslist"; String url = PublicConfig.external_url + "/staff/archiveslist";
Map<String,Object> map = new HashMap<>(); Map<String,Object> map = new HashMap<>();
map.put("number",number); map.put("number",number);
String jsonString = JSONObject.toJSONString(map); String jsonString = JSONObject.toJSONString(map);

18
src/main/java/com/dreamchaser/depository_manage/config/QyWxConfig.java

@ -10,6 +10,7 @@ import com.dreamchaser.depository_manage.entity.qywxDepartment;
import com.dreamchaser.depository_manage.entity.qywxLabel; import com.dreamchaser.depository_manage.entity.qywxLabel;
import com.dreamchaser.depository_manage.entity.qywxLabelUser; import com.dreamchaser.depository_manage.entity.qywxLabelUser;
import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.security.pool.RedisPool;
import com.dreamchaser.depository_manage.utils.HttpUtils; import com.dreamchaser.depository_manage.utils.HttpUtils;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import lombok.Data; import lombok.Data;
@ -35,7 +36,7 @@ public class QyWxConfig {
public static String code = ""; //userCode public static String code = ""; //userCode
public static String sendMessage_url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN"; public static String sendMessage_url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN";
public static RedisTemplate<String, String> redisTemplate; public static RedisTemplate<String,String> redisTemplate;
// 用于回调配置的token // 用于回调配置的token
public static String sToken = "sM4MFE44fAKdtqvq81HYygqmrdUn"; public static String sToken = "sM4MFE44fAKdtqvq81HYygqmrdUn";
@ -62,6 +63,14 @@ public class QyWxConfig {
// 用于jsapi的url // 用于jsapi的url
public static String jsApiUrl = "https://jy.hxgk.group/"; public static String jsApiUrl = "https://jy.hxgk.group/";
@Autowired
public void setRedisTemplate(RedisPool redisPool) {
QyWxConfig.redisTemplate = redisPool.redisTemplate(14);
}
// 用于获取企业微信对应token // 用于获取企业微信对应token
public static String GetQYWXToken(String UserAgent) { public static String GetQYWXToken(String UserAgent) {
// 获取redis中当前用户的user-agent // 获取redis中当前用户的user-agent
@ -292,11 +301,4 @@ public class QyWxConfig {
@Autowired
public void setRedisTemplate(RedisTemplate<String, String> redisTemplate) {
QyWxConfig.redisTemplate = redisTemplate;
}
} }

8
src/main/java/com/dreamchaser/depository_manage/controller/CompanyController.java

@ -2,7 +2,7 @@ package com.dreamchaser.depository_manage.controller;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.pojo.*; import com.dreamchaser.depository_manage.pojo.*;
@ -53,7 +53,7 @@ public class CompanyController {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
String url = PortConfig.external_url + "/org/govlist"; String url = PublicConfig.external_url + "/org/govlist";
Object page = map.get("page"); Object page = map.get("page");
Object pagesize = map.get("size"); Object pagesize = map.get("size");
String superior = (String) map.get("superior"); String superior = (String) map.get("superior");
@ -140,7 +140,7 @@ public class CompanyController {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); UserByPort userByPort = AuthenticationTokenPool.getUserToken(token);
String url = PortConfig.external_url + "/org/govlist"; String url = PublicConfig.external_url + "/org/govlist";
if (map.containsKey("state")) { if (map.containsKey("state")) {
Object state = map.get("state"); Object state = map.get("state");
map.put("state", ObjectFormatUtil.toInteger(state)); map.put("state", ObjectFormatUtil.toInteger(state));
@ -186,7 +186,7 @@ public class CompanyController {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); UserByPort userByPort = AuthenticationTokenPool.getUserToken(token);
String url = PortConfig.external_url + "/org/positionlist"; String url = PublicConfig.external_url + "/org/positionlist";
Object page = map.get("page"); Object page = map.get("page");
Object pagesize = map.get("size"); Object pagesize = map.get("size");
map.put("page", ObjectFormatUtil.toInteger(page)); map.put("page", ObjectFormatUtil.toInteger(page));

33
src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java

@ -416,7 +416,9 @@ public class DepositoryController {
depository_data.put("week", show_weekday); depository_data.put("week", show_weekday);
if ("0".equals(type)) { if ("0".equals(type)) {
ExecutorService exs = Executors.newFixedThreadPool(depositoryAllNameAndId.size()); int threadSize = depositoryAllNameAndId.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService // 1.定义CompletionService
@ -444,7 +446,9 @@ public class DepositoryController {
depository_data.put("data", show_data); depository_data.put("data", show_data);
} else { } else {
// 定义线程 // 定义线程
ExecutorService exs = Executors.newFixedThreadPool(depositoryAllNameAndId.size()); int threadSize = depositoryAllNameAndId.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService // 1.定义CompletionService
@ -544,7 +548,9 @@ public class DepositoryController {
// 获取各仓库名称以及id // 获取各仓库名称以及id
Map<String, Integer> depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort); Map<String, Integer> depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort);
ExecutorService exs = Executors.newFixedThreadPool(20); int threadSize = 10;
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService // 1.定义CompletionService
@ -674,7 +680,9 @@ public class DepositoryController {
days.add(format); days.add(format);
} }
// 定义线程 // 定义线程
ExecutorService exs = Executors.newFixedThreadPool(depositoryAllNameAndId.size()); int threadSize = depositoryAllNameAndId.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService // 1.定义CompletionService
@ -719,7 +727,9 @@ public class DepositoryController {
List<Object> sourceList = (List<Object>) previousMonth.get("sourceList"); List<Object> sourceList = (List<Object>) previousMonth.get("sourceList");
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
ExecutorService exs = Executors.newFixedThreadPool(months.size()); int threadSize = months.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 1.定义CompletionService // 1.定义CompletionService
CompletionService<Object> completionService = new ExecutorCompletionService<Object>(exs); CompletionService<Object> completionService = new ExecutorCompletionService<Object>(exs);
for (int num = 0; num < months.size() - 1; num++) { for (int num = 0; num < months.size() - 1; num++) {
@ -761,7 +771,7 @@ public class DepositoryController {
// 定义每次开启的线程数 // 定义每次开启的线程数
int threadSize = depositoryList.size(); int threadSize = depositoryList.size();
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(threadSize); ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 定义线程结果集 // 定义线程结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 定义CompletionService // 定义CompletionService
@ -1250,7 +1260,9 @@ public class DepositoryController {
*/ */
Map<Object, Object> getBarChartData(UserByPort userByPort) { Map<Object, Object> getBarChartData(UserByPort userByPort) {
Map<String, Integer> depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort); Map<String, Integer> depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort);
ExecutorService exs = Executors.newFixedThreadPool(2); int threadSize = 2;
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 定义CompletionService // 定义CompletionService
@ -1325,7 +1337,9 @@ public class DepositoryController {
} }
// 定义线程 // 定义线程
ExecutorService exs = Executors.newFixedThreadPool(depositoryAllNameAndId.size()); int threadSize = depositoryAllNameAndId.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService // 1.定义CompletionService
@ -1717,7 +1731,8 @@ public class DepositoryController {
@Override @Override
public Object call() throws Exception { public Object call() throws Exception {
List<MaterialType> materialTypeAll = materialTypeService.findMaterialTypeNoParent(); List<MaterialType> materialTypeAll = materialTypeService.findMaterialTypeNoParent();
ExecutorService exs = Executors.newFixedThreadPool(materialTypeAll.size()); int threadSize = materialTypeAll.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService // 1.定义CompletionService

884
src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java

File diff suppressed because it is too large

13
src/main/java/com/dreamchaser/depository_manage/controller/DownLoadFileController.java

@ -1,23 +1,16 @@
package com.dreamchaser.depository_manage.controller; package com.dreamchaser.depository_manage.controller;
import com.dreamchaser.depository_manage.config.PortConfig; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.entity.UserByPort; import com.dreamchaser.depository_manage.entity.UserByPort;
import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool;
import com.dreamchaser.depository_manage.utils.DeviceUtil; import com.dreamchaser.depository_manage.utils.DeviceUtil;
import org.springframework.core.io.ClassPathResource;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
@RestController @RestController
@RequestMapping("/download") @RequestMapping("/download")
@ -178,7 +171,7 @@ public class DownLoadFileController {
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (b) { if (b) {
// 如果是移动端 // 如果是移动端
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
path = "static/upload/helpDocumentForAdmin-mobile.pdf"; path = "static/upload/helpDocumentForAdmin-mobile.pdf";
} else { } else {
path = "static/upload/helpDocumentForUser-mobile.pdf"; path = "static/upload/helpDocumentForUser-mobile.pdf";
@ -186,7 +179,7 @@ public class DownLoadFileController {
} }
} else { } else {
// 如果是pc端 // 如果是pc端
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
path = "static/upload/helpDocumentForAdmin-pc.pdf"; path = "static/upload/helpDocumentForAdmin-pc.pdf";
} else { } else {
path = "static/upload/helpDocumentForUser-pc.pdf"; path = "static/upload/helpDocumentForUser-pc.pdf";

77
src/main/java/com/dreamchaser/depository_manage/controller/GroupController.java

@ -2,7 +2,7 @@ package com.dreamchaser.depository_manage.controller;
import cn.hutool.core.lang.Snowflake; import cn.hutool.core.lang.Snowflake;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.pojo.GroupInfoP; import com.dreamchaser.depository_manage.pojo.GroupInfoP;
@ -10,11 +10,12 @@ import com.dreamchaser.depository_manage.pojo.RestResponse;
import com.dreamchaser.depository_manage.pojo.RoleAndDepository; import com.dreamchaser.depository_manage.pojo.RoleAndDepository;
import com.dreamchaser.depository_manage.pojo.StatusInfo; import com.dreamchaser.depository_manage.pojo.StatusInfo;
import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool;
import com.dreamchaser.depository_manage.security.pool.RedisPool;
import com.dreamchaser.depository_manage.security.pool.SendQyWxMessageThreadPool;
import com.dreamchaser.depository_manage.service.*; import com.dreamchaser.depository_manage.service.*;
import com.dreamchaser.depository_manage.service.impl.QyWxOperationService; import com.dreamchaser.depository_manage.service.impl.QyWxOperationService;
import com.dreamchaser.depository_manage.utils.*; import com.dreamchaser.depository_manage.utils.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -39,7 +40,7 @@ public class GroupController {
private QyWxOperationService qyWxOperationService; private QyWxOperationService qyWxOperationService;
@Autowired @Autowired
private RedisTemplate<String, String> redisTemplateForHash; private RedisPool redisPool;
@Autowired @Autowired
private RoleService roleService; private RoleService roleService;
@ -458,16 +459,16 @@ public class GroupController {
// 获取暂存的数据 // 获取暂存的数据
List<Integer> gids = (List<Integer>) map.get("gids"); List<Integer> gids = (List<Integer>) map.get("gids");
// 获取当前已经存在的数据 // 获取当前已经存在的数据
List<String> range = redisTemplateForHash.opsForList().range("wms_gids" + userToken.getId(), 0, -1); List<String> range = redisPool.getRedisTemplateByDb(15).opsForList().range("wms_gids" + userToken.getId(), 0, -1);
for (int i = 0; i < gids.size(); i++) { for (Integer gid : gids) {
if (range.contains(gids.get(i).toString())) { if (range.contains(gid.toString())) {
continue; continue;
} }
redisTemplateForHash.opsForList().leftPush("wms_gids" + userToken.getId(), gids.get(i).toString()); redisPool.getRedisTemplateByDb(15).opsForList().leftPush("wms_gids" + userToken.getId(), gid.toString());
} }
// 设置过期时间为1天 // 设置过期时间为1天
redisTemplateForHash.expire("wms_gids" + userToken.getId(), 24 * 60 * 60, TimeUnit.SECONDS); redisPool.getRedisTemplateByDb(15).expire("wms_gids" + userToken.getId(), 24 * 60 * 60, TimeUnit.SECONDS);
return CrudUtil.insertHandle(1, 1); return CrudUtil.insertHandle(1, 1);
} }
@ -489,7 +490,7 @@ public class GroupController {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
Long size = redisTemplateForHash.boundListOps("wms_gids" + userToken.getId()).size(); Long size = redisPool.getRedisTemplateByDb(15).boundListOps("wms_gids" + userToken.getId()).size();
if (end > size) { if (end > size) {
end = ObjectFormatUtil.toInteger(size); end = ObjectFormatUtil.toInteger(size);
} }
@ -497,7 +498,7 @@ public class GroupController {
Map<String, Object> paramForGroupOnly = new HashMap<>(); Map<String, Object> paramForGroupOnly = new HashMap<>();
for (int i = start; i < end; i++) { for (int i = start; i < end; i++) {
// 获取组合编号 // 获取组合编号
Integer gid = ObjectFormatUtil.toInteger(redisTemplateForHash.opsForList().index("wms_gids" + userToken.getId(), i)); Integer gid = ObjectFormatUtil.toInteger( redisPool.getRedisTemplateByDb(15).opsForList().index("wms_gids" + userToken.getId(), i));
paramForGroupOnly.put("gid", gid); paramForGroupOnly.put("gid", gid);
List<GroupInfoP> groupPByCondition = groupService.findOnlyGroupByCondition(paramForGroupOnly); List<GroupInfoP> groupPByCondition = groupService.findOnlyGroupByCondition(paramForGroupOnly);
for (int j = 0; j < groupPByCondition.size(); j++) { for (int j = 0; j < groupPByCondition.size(); j++) {
@ -525,7 +526,7 @@ public class GroupController {
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
List<Integer> gids = (List<Integer>) map.get("gids"); List<Integer> gids = (List<Integer>) map.get("gids");
for (int i = 0; i < gids.size(); i++) { for (int i = 0; i < gids.size(); i++) {
redisTemplateForHash.opsForList().remove("wms_gids" + userToken.getId(), 1, gids.get(i).toString()); redisPool.getRedisTemplateByDb(15).opsForList().remove("wms_gids" + userToken.getId(), 1, gids.get(i).toString());
} }
return CrudUtil.insertHandle(1, 1); return CrudUtil.insertHandle(1, 1);
} }
@ -647,7 +648,7 @@ public class GroupController {
String crypt = Md5.crypt(header); String crypt = Md5.crypt(header);
map.put("applicantId", userToken.getId()); map.put("applicantId", userToken.getId());
// 获取当前部门负责人 // 获取当前部门负责人
List<UserByPort> departmentHeadByUsers = PortConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userToken); List<UserByPort> departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userToken);
// 部门负责人id // 部门负责人id
StringBuilder departmentHeadId = new StringBuilder(); StringBuilder departmentHeadId = new StringBuilder();
// 部门负责人企业微信user // 部门负责人企业微信user
@ -702,20 +703,17 @@ public class GroupController {
} }
Object id = map.get("id"); // 获取主订单编号 Object id = map.get("id"); // 获取主订单编号
// 开启一个线程开启审批 // 开启一个线程开启审批
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplate(crypt, userToken, ObjectFormatUtil.toInteger(id));
public void run() { String sp_no = jsonObject.getString("sp_no");
JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplate(crypt, userToken, ObjectFormatUtil.toInteger(id)); Map<String, Object> QyWxApprovalMap = new HashMap<>();
String sp_no = jsonObject.getString("sp_no"); QyWxApprovalMap.put("sp_no", sp_no);
Map<String, Object> QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("mainId", id.toString());
QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList"));
QyWxApprovalMap.put("mainId", id.toString()); redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap);
QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList")); // 设置过期为7天
redisTemplateForHash.opsForHash().putAll(sp_no, QyWxApprovalMap); redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS);
// 设置过期为7天 });
redisTemplateForHash.expire(sp_no, 7, TimeUnit.DAYS);
}
}).start();
if (integer != 0 && params.size() < 1) { if (integer != 0 && params.size() < 1) {
return CrudUtil.insertHandle(integer, result); return CrudUtil.insertHandle(integer, result);
@ -819,7 +817,7 @@ public class GroupController {
String crypt = Md5.crypt(header); String crypt = Md5.crypt(header);
map.put("applicantId", userToken.getId()); map.put("applicantId", userToken.getId());
// 获取当前部门负责人 // 获取当前部门负责人
List<UserByPort> departmentHeadByUsers = PortConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userToken); List<UserByPort> departmentHeadByUsers = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userToken);
// 部门负责人id // 部门负责人id
StringBuilder departmentHeadId = new StringBuilder(); StringBuilder departmentHeadId = new StringBuilder();
// 部门负责人企业微信user // 部门负责人企业微信user
@ -928,20 +926,17 @@ public class GroupController {
} }
Object id = map.get("id"); // 获取主订单编号 Object id = map.get("id"); // 获取主订单编号
// 开启一个线程开启审批 // 开启一个线程开启审批
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplate(crypt, userToken, ObjectFormatUtil.toInteger(id));
public void run() { String sp_no = jsonObject.getString("sp_no");
JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplate(crypt, userToken, ObjectFormatUtil.toInteger(id)); Map<String, Object> QyWxApprovalMap = new HashMap<>();
String sp_no = jsonObject.getString("sp_no"); QyWxApprovalMap.put("sp_no", sp_no);
Map<String, Object> QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("mainId", id.toString());
QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList"));
QyWxApprovalMap.put("mainId", id.toString()); redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap);
QyWxApprovalMap.put("otherDepartmentIdList", jsonObject.getString("otherDepartmentIdList")); // 设置过期为7天
redisTemplateForHash.opsForHash().putAll(sp_no, QyWxApprovalMap); redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS);
// 设置过期为7天 });
redisTemplateForHash.expire(sp_no, 7, TimeUnit.DAYS);
}
}).start();
return CrudUtil.insertHandle(integer, result); return CrudUtil.insertHandle(integer, result);
} }

35
src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java

@ -1,27 +1,24 @@
package com.dreamchaser.depository_manage.controller; package com.dreamchaser.depository_manage.controller;
import cn.hutool.core.lang.Snowflake; import cn.hutool.core.lang.Snowflake;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.JM_3DES; import com.dreamchaser.depository_manage.config.JM_3DES;
import com.dreamchaser.depository_manage.config.PortConfig; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.mapper.MaterialTypeMapper;
import com.dreamchaser.depository_manage.pojo.*; import com.dreamchaser.depository_manage.pojo.*;
import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool;
import com.dreamchaser.depository_manage.security.pool.RedisPool;
import com.dreamchaser.depository_manage.service.*; import com.dreamchaser.depository_manage.service.*;
import com.dreamchaser.depository_manage.utils.CrudUtil; import com.dreamchaser.depository_manage.utils.CrudUtil;
import com.dreamchaser.depository_manage.utils.DateUtil; import com.dreamchaser.depository_manage.utils.DateUtil;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -45,7 +42,7 @@ public class MaterialController {
PlaceService placeService; PlaceService placeService;
@Autowired @Autowired
RedisTemplate<String, String> redisTemplate; RedisPool redisPool;
@Autowired @Autowired
@ -128,8 +125,8 @@ public class MaterialController {
size = ObjectFormatUtil.toInteger(map.get("size")); size = ObjectFormatUtil.toInteger(map.get("size"));
} }
if (!(map.containsKey("depositoryId") || map.containsKey("code") || map.containsKey("mname"))) { if (!(map.containsKey("depositoryId") || map.containsKey("code") || map.containsKey("mname"))) {
for (int i = 0; i < depositoryByAdminorg.size(); i++) { for (Depository depository : depositoryByAdminorg) {
Integer did = depositoryByAdminorg.get(i).getId(); Integer did = depository.getId();
didList.add(did); didList.add(did);
map.put("depositoryId", did); map.put("depositoryId", did);
List<InventoryP> inventory = materialService.findInventory(map); List<InventoryP> inventory = materialService.findInventory(map);
@ -167,7 +164,7 @@ public class MaterialController {
List<InventoryP> list = new ArrayList<>(); List<InventoryP> list = new ArrayList<>();
Integer total = 0; Integer total = 0;
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (!PortConfig.roleAdminorgList.contains(maindeparment)) { if (!PublicConfig.roleAdminorgList.contains(maindeparment)) {
List<Integer> didList = roleService.findDepositoryIdForUserHas(userToken); List<Integer> didList = roleService.findDepositoryIdForUserHas(userToken);
map.put("depositoryIds", didList); map.put("depositoryIds", didList);
} }
@ -621,11 +618,11 @@ public class MaterialController {
String s = map.get("id").toString(); String s = map.get("id").toString();
String type = map.get("type").toString(); String type = map.get("type").toString();
String key = "WMS_temporaryValue_" + type + userByPort.getNumber(); String key = "WMS_temporaryValue_" + type + userByPort.getNumber();
List<String> range = redisTemplate.opsForList().range(key, 0, -1); List<String> range = redisPool.getRedisTemplateByDb(15).opsForList().range(key, 0, -1);
if (range != null) { if (range != null) {
if (!range.contains(s)) { if (!range.contains(s)) {
redisTemplate.opsForList().rightPush(key, s); redisPool.getRedisTemplateByDb(15).opsForList().rightPush(key, s);
redisTemplate.expire(key, DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); redisPool.getRedisTemplateByDb(15).expire(key, DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
} }
} }
return new RestResponse(); return new RestResponse();
@ -644,7 +641,7 @@ public class MaterialController {
if (map.containsKey("type")) { if (map.containsKey("type")) {
String type = map.get("type").toString(); String type = map.get("type").toString();
String key = "WMS_temporaryValue_" + type + userByPort.getNumber(); String key = "WMS_temporaryValue_" + type + userByPort.getNumber();
List<String> range = redisTemplate.opsForList().range(key, 0, -1); List<String> range = redisPool.getRedisTemplateByDb(15).opsForList().range(key, 0, -1);
List<Inventory> result = new ArrayList<>(); List<Inventory> result = new ArrayList<>();
if (range != null && range.size() > 0) { if (range != null && range.size() > 0) {
@ -682,7 +679,7 @@ public class MaterialController {
if (map.containsKey("type")) { if (map.containsKey("type")) {
String type = map.get("type").toString(); String type = map.get("type").toString();
String key = "WMS_temporaryValue_" + type + userByPort.getNumber(); String key = "WMS_temporaryValue_" + type + userByPort.getNumber();
List<String> range = redisTemplate.opsForList().range(key, 0, -1); List<String> range = redisPool.getRedisTemplateByDb(15).opsForList().range(key, 0, -1);
List<Material> result = new ArrayList<>(); List<Material> result = new ArrayList<>();
if (range != null && range.size() > 0) { if (range != null && range.size() > 0) {
@ -719,7 +716,7 @@ public class MaterialController {
if (map.containsKey("id")) { if (map.containsKey("id")) {
String s = map.get("id").toString(); String s = map.get("id").toString();
String type = map.get("type").toString(); String type = map.get("type").toString();
redisTemplate.opsForList().remove("WMS_temporaryValue_" + type + userByPort.getNumber(), 0, s); redisPool.getRedisTemplateByDb(15).opsForList().remove("WMS_temporaryValue_" + type + userByPort.getNumber(), 0, s);
} }
} }
@ -736,12 +733,12 @@ public class MaterialController {
String[] mids = map.get("mids").toString().split(","); String[] mids = map.get("mids").toString().split(",");
String type = map.get("type").toString(); String type = map.get("type").toString();
String key = "WMS_temporaryValue_" + type + userByPort.getNumber(); String key = "WMS_temporaryValue_" + type + userByPort.getNumber();
List<String> range = redisTemplate.opsForList().range(key, 0, -1); List<String> range = redisPool.getRedisTemplateByDb(15).opsForList().range(key, 0, -1);
if (range != null) { if (range != null) {
for (String s : mids) { for (String s : mids) {
if (!range.contains(s)) { if (!range.contains(s)) {
redisTemplate.opsForList().rightPush(key, s); redisPool.getRedisTemplateByDb(15).opsForList().rightPush(key, s);
redisTemplate.expire(key, DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); redisPool.getRedisTemplateByDb(15).expire(key, DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
} }
} }
@ -761,7 +758,7 @@ public class MaterialController {
} }
UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); UserByPort userByPort = AuthenticationTokenPool.getUserToken(token);
// 存入mids // 存入mids
redisTemplate.opsForValue().set("temporaryBarCodeValueForMaterial" + userByPort.getNumber(), JSONObject.toJSONString(map)); redisPool.getRedisTemplateByDb(15).opsForValue().set("temporaryBarCodeValueForMaterial" + userByPort.getNumber(), JSONObject.toJSONString(map));
return new RestResponse(200); return new RestResponse(200);
} }

76
src/main/java/com/dreamchaser/depository_manage/controller/PageController.java

@ -1,28 +1,24 @@
package com.dreamchaser.depository_manage.controller; package com.dreamchaser.depository_manage.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.config.QyWxConfig; import com.dreamchaser.depository_manage.config.QyWxConfig;
import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.entity.MaterialAndPlace; import com.dreamchaser.depository_manage.entity.MaterialAndPlace;
import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.pojo.*; import com.dreamchaser.depository_manage.pojo.*;
import com.dreamchaser.depository_manage.security.bean.UserToken;
import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool;
import com.dreamchaser.depository_manage.security.pool.RedisPool;
import com.dreamchaser.depository_manage.service.*; import com.dreamchaser.depository_manage.service.*;
import com.dreamchaser.depository_manage.utils.*; import com.dreamchaser.depository_manage.utils.*;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.http.protocol.HTTP; import org.apache.http.protocol.HTTP;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -60,7 +56,7 @@ public class PageController {
private PlaceService placeService; private PlaceService placeService;
@Autowired @Autowired
private RedisTemplate<String, String> redisTemplateForHash; private RedisPool redisPool;
@Autowired @Autowired
private StockTakingService stockTakingService; private StockTakingService stockTakingService;
@ -247,7 +243,7 @@ public class PageController {
warehouseRecord = applicationIn + applicationOut; warehouseRecord = applicationIn + applicationOut;
mv.addObject("warehouseRecord", warehouseRecord); mv.addObject("warehouseRecord", warehouseRecord);
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "inline-block"); mv.addObject("display", "inline-block");
} else { } else {
mv.addObject("display", "none"); mv.addObject("display", "none");
@ -371,7 +367,7 @@ public class PageController {
mv.addObject("record", splitInfoPById); mv.addObject("record", splitInfoPById);
mv.setViewName("pages/split/split_edit"); mv.setViewName("pages/split/split_edit");
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "block"); mv.addObject("display", "block");
} else { } else {
mv.addObject("display", "none"); mv.addObject("display", "none");
@ -395,7 +391,7 @@ public class PageController {
mv.setViewName("pages/split/split-out"); mv.setViewName("pages/split/split-out");
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "inline-block"); mv.addObject("display", "inline-block");
} else { } else {
mv.addObject("display", "none"); mv.addObject("display", "none");
@ -424,7 +420,7 @@ public class PageController {
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "inline-block"); mv.addObject("display", "inline-block");
} else { } else {
mv.addObject("display", "none"); mv.addObject("display", "none");
@ -650,7 +646,7 @@ public class PageController {
map.put("codeFlag", 1); map.put("codeFlag", 1);
// 获取物料与条形码的对应关系 // 获取物料与条形码的对应关系
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "block"); mv.addObject("display", "block");
} else { } else {
mv.addObject("display", "none"); mv.addObject("display", "none");
@ -695,7 +691,7 @@ public class PageController {
List<MaterialType> materialTypeAll = materialTypeService.findMaterialTypeByCondition(map); List<MaterialType> materialTypeAll = materialTypeService.findMaterialTypeByCondition(map);
mv.addObject("materialTypes", materialTypeAll); mv.addObject("materialTypes", materialTypeAll);
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "inline-block"); mv.addObject("display", "inline-block");
} else { } else {
mv.addObject("display", "none"); mv.addObject("display", "none");
@ -801,7 +797,7 @@ public class PageController {
} }
mv.setViewName("pages/application/application-out"); mv.setViewName("pages/application/application-out");
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.setViewName("pages/applicationForStorageCenter/application-out"); mv.setViewName("pages/applicationForStorageCenter/application-out");
} }
return mv; return mv;
@ -831,7 +827,7 @@ public class PageController {
mv.addObject("display", "none"); mv.addObject("display", "none");
} }
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.setViewName("pages/applicationForStorageCenter/application-out_back"); mv.setViewName("pages/applicationForStorageCenter/application-out_back");
} }
InventoryP inventoryP = new InventoryP(); InventoryP inventoryP = new InventoryP();
@ -882,7 +878,7 @@ public class PageController {
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "inline-block"); mv.addObject("display", "inline-block");
mv.addObject("type", "2"); mv.addObject("type", "2");
} else { } else {
@ -913,7 +909,7 @@ public class PageController {
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "inline-block"); mv.addObject("display", "inline-block");
mv.addObject("type", "2"); mv.addObject("type", "2");
} else { } else {
@ -976,7 +972,7 @@ public class PageController {
ModelAndView mv = new ModelAndView(); ModelAndView mv = new ModelAndView();
mv.setViewName("pages/depository/table-stock"); mv.setViewName("pages/depository/table-stock");
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "table-cell"); mv.addObject("display", "table-cell");
mv.addObject("type", "2"); mv.addObject("type", "2");
} else { } else {
@ -1065,7 +1061,7 @@ public class PageController {
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "block"); mv.addObject("display", "block");
} else { } else {
mv.addObject("display", "none"); mv.addObject("display", "none");
@ -1119,7 +1115,7 @@ public class PageController {
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "inline-block"); mv.addObject("display", "inline-block");
} else { } else {
mv.addObject("display", "none"); mv.addObject("display", "none");
@ -1155,7 +1151,7 @@ public class PageController {
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "inline-block"); mv.addObject("display", "inline-block");
} else { } else {
mv.addObject("display", "none"); mv.addObject("display", "none");
@ -1186,7 +1182,7 @@ public class PageController {
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "inline-block"); mv.addObject("display", "inline-block");
} else { } else {
mv.addObject("display", "none"); mv.addObject("display", "none");
@ -1221,7 +1217,7 @@ public class PageController {
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "block"); mv.addObject("display", "block");
} else { } else {
mv.addObject("display", "none"); mv.addObject("display", "none");
@ -1291,7 +1287,7 @@ public class PageController {
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "block"); mv.addObject("display", "block");
} else { } else {
mv.addObject("display", "none"); mv.addObject("display", "none");
@ -1948,7 +1944,7 @@ public class PageController {
mv.addObject("record", recordP); mv.addObject("record", recordP);
mv.addObject("recordMinList", applicationOutRecordMinByParent); mv.addObject("recordMinList", applicationOutRecordMinByParent);
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "table-row"); mv.addObject("display", "table-row");
} else { } else {
mv.addObject("display", "none"); mv.addObject("display", "none");
@ -2191,13 +2187,13 @@ public class PageController {
ApplicationOutRecordP recordP = depositoryRecordService.findApplicationOutRecordPById(recordMinP.getParentId()); ApplicationOutRecordP recordP = depositoryRecordService.findApplicationOutRecordPById(recordMinP.getParentId());
boolean b = DateUtil.IsMonthStartAndEnd(recordP.getApplicantTime()); boolean b = DateUtil.IsMonthStartAndEnd(recordP.getApplicantTime());
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment) && b) { if (PublicConfig.roleAdminorgList.contains(maindeparment) && b) {
mv.addObject("edisplay", "inline-block"); mv.addObject("edisplay", "inline-block");
} else { } else {
mv.addObject("edisplay", "none"); mv.addObject("edisplay", "none");
} }
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("pdisplay", "table-row"); mv.addObject("pdisplay", "table-row");
} else { } else {
mv.addObject("pdisplay", "none"); mv.addObject("pdisplay", "none");
@ -2374,7 +2370,7 @@ public class PageController {
} }
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.addObject("display", "table-row"); mv.addObject("display", "table-row");
} else { } else {
mv.addObject("display", "none"); mv.addObject("display", "none");
@ -2427,7 +2423,7 @@ public class PageController {
mv.addObject("gidList", gidList); mv.addObject("gidList", gidList);
mv.setViewName("pages/group/applicationOutForGroup"); mv.setViewName("pages/group/applicationOutForGroup");
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.setViewName("pages/applicationForStorageCenter/applicationOutForGroup"); mv.setViewName("pages/applicationForStorageCenter/applicationOutForGroup");
} }
return mv; return mv;
@ -2489,7 +2485,7 @@ public class PageController {
if ("".equals(s)) { if ("".equals(s)) {
continue; continue;
} }
UserByPort manager = PortConfig.findUserByPortByNumber(s); UserByPort manager = PublicConfig.findUserByPortByNumber(s);
managerName.append(manager.getName()).append(","); managerName.append(manager.getName()).append(",");
} }
stp.setDepartmentManagerName(managerName.toString()); stp.setDepartmentManagerName(managerName.toString());
@ -2565,7 +2561,7 @@ public class PageController {
if ("".equals(s)) { if ("".equals(s)) {
continue; continue;
} }
UserByPort manager = PortConfig.findUserByPortByNumber(s); UserByPort manager = PublicConfig.findUserByPortByNumber(s);
managerName.append(manager.getName()).append(","); managerName.append(manager.getName()).append(",");
} }
stp.setDepartmentManagerName(managerName.toString()); stp.setDepartmentManagerName(managerName.toString());
@ -2684,7 +2680,7 @@ public class PageController {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); UserByPort userByPort = AuthenticationTokenPool.getUserToken(token);
String url = PortConfig.external_url + "/org/getgovcont"; String url = PublicConfig.external_url + "/org/getgovcont";
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
ModelAndView mv = new ModelAndView(); ModelAndView mv = new ModelAndView();
mv.setViewName("pages/company/company_edit"); mv.setViewName("pages/company/company_edit");
@ -2756,7 +2752,7 @@ public class PageController {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
String url = PortConfig.external_url + "/org/positionlist"; String url = PublicConfig.external_url + "/org/positionlist";
ModelAndView mv = new ModelAndView(); ModelAndView mv = new ModelAndView();
mv.addObject("parentId", organization); mv.addObject("parentId", organization);
if (organization != null) { if (organization != null) {
@ -2822,7 +2818,7 @@ public class PageController {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
String url = PortConfig.external_url + "/org/positionlist"; String url = PublicConfig.external_url + "/org/positionlist";
ModelAndView mv = new ModelAndView(); ModelAndView mv = new ModelAndView();
if (parentId != null) { if (parentId != null) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
@ -3010,7 +3006,7 @@ public class PageController {
} }
UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); UserByPort userByPort = AuthenticationTokenPool.getUserToken(token);
// 获取当前key值存储在redis中的值 // 获取当前key值存储在redis中的值
List<String> range = redisTemplateForHash.opsForList().range("WMS_temporaryValue_In" + userByPort.getNumber(), 0, -1); List<String> range = redisPool.getRedisTemplateByDb(15).opsForList().range("WMS_temporaryValue_In" + userByPort.getNumber(), 0, -1);
if (range != null && range.size() > 0) { if (range != null && range.size() > 0) {
mv.setViewName("pages/application/application-in_temporaryValue"); mv.setViewName("pages/application/application-in_temporaryValue");
} else { } else {
@ -3040,7 +3036,7 @@ public class PageController {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
List<String> range = redisTemplateForHash.boundListOps("WMS_temporaryValue_Out" + userToken.getNumber()).range(0, -1); List<String> range = redisPool.getRedisTemplateByDb(15).boundListOps("WMS_temporaryValue_Out" + userToken.getNumber()).range(0, -1);
// 获取当前用户是否存在可见仓库 // 获取当前用户是否存在可见仓库
List<Integer> union = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userToken); List<Integer> union = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userToken);
if (union.size() > 0) { if (union.size() > 0) {
@ -3051,12 +3047,12 @@ public class PageController {
Integer maindeparment = userToken.getMaindeparment(); Integer maindeparment = userToken.getMaindeparment();
if (range != null && range.size() > 0) { if (range != null && range.size() > 0) {
mv.setViewName("pages/application/application-out_temporaryValue"); mv.setViewName("pages/application/application-out_temporaryValue");
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.setViewName("pages/applicationForStorageCenter/application-out_temporaryValue"); mv.setViewName("pages/applicationForStorageCenter/application-out_temporaryValue");
} }
} else { } else {
mv.setViewName("pages/application/application-out"); mv.setViewName("pages/application/application-out");
if (PortConfig.roleAdminorgList.contains(maindeparment)) { if (PublicConfig.roleAdminorgList.contains(maindeparment)) {
mv.setViewName("pages/applicationForStorageCenter/application-out"); mv.setViewName("pages/applicationForStorageCenter/application-out");
} }
} }
@ -3107,7 +3103,7 @@ public class PageController {
StringBuilder departmentHeadName = new StringBuilder(); StringBuilder departmentHeadName = new StringBuilder();
StringBuilder departmentHeadId = new StringBuilder(); StringBuilder departmentHeadId = new StringBuilder();
List<UserByPort> departmentHeadByUser = PortConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userToken); List<UserByPort> departmentHeadByUser = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userToken);
for (UserByPort departmentHead : departmentHeadByUser for (UserByPort departmentHead : departmentHeadByUser
) { ) {
departmentHeadName.append(departmentHead.getName()).append(","); departmentHeadName.append(departmentHead.getName()).append(",");
@ -3489,7 +3485,7 @@ public class PageController {
} }
String key = "user:" + userToken.getId().toString(); String key = "user:" + userToken.getId().toString();
String minRecord = (String) redisTemplateForHash.opsForHash().get(key, "minRecord"); String minRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "minRecord");
if (minRecord != null) { if (minRecord != null) {
// 获取子订单键值 // 获取子订单键值
String[] split = minRecord.replace("[", "").replace("]", "").split(","); String[] split = minRecord.replace("[", "").replace("]", "").split(",");

44
src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java

@ -1,7 +1,7 @@
package com.dreamchaser.depository_manage.controller; package com.dreamchaser.depository_manage.controller;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.config.QyWxConfig; import com.dreamchaser.depository_manage.config.QyWxConfig;
import com.dreamchaser.depository_manage.config.QyWxJMJM.com.qq.weixin.mp.aes.AesException; import com.dreamchaser.depository_manage.config.QyWxJMJM.com.qq.weixin.mp.aes.AesException;
import com.dreamchaser.depository_manage.config.QyWxJMJM.com.qq.weixin.mp.aes.WXBizMsgCrypt; import com.dreamchaser.depository_manage.config.QyWxJMJM.com.qq.weixin.mp.aes.WXBizMsgCrypt;
@ -12,6 +12,7 @@ import com.dreamchaser.depository_manage.pojo.RestResponse;
import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.*; import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.*;
import com.dreamchaser.depository_manage.pojo.callBackXml.callBackXml_button_templatecard.TemplateCard; import com.dreamchaser.depository_manage.pojo.callBackXml.callBackXml_button_templatecard.TemplateCard;
import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool;
import com.dreamchaser.depository_manage.security.pool.RedisPool;
import com.dreamchaser.depository_manage.security.pool.UserKeyAndTokenPool; import com.dreamchaser.depository_manage.security.pool.UserKeyAndTokenPool;
import com.dreamchaser.depository_manage.service.CallBackLogService; import com.dreamchaser.depository_manage.service.CallBackLogService;
import com.dreamchaser.depository_manage.service.DepositoryRecordService; import com.dreamchaser.depository_manage.service.DepositoryRecordService;
@ -24,7 +25,6 @@ import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import com.dreamchaser.depository_manage.utils.QyWxXMLUtils; import com.dreamchaser.depository_manage.utils.QyWxXMLUtils;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
@ -38,6 +38,7 @@ import java.time.Instant;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -70,7 +71,7 @@ public class QyWxOperationController {
@Autowired @Autowired
RedisTemplate<String, String> redisTemplate; RedisPool redisPool;
/** /**
* 用于接收企业微信的回调get方式 * 用于接收企业微信的回调get方式
@ -172,7 +173,7 @@ public class QyWxOperationController {
return; return;
} }
// 根据userId获取处理人 // 根据userId获取处理人
Map<String, Object> portInfo = PortConfig.findUserByQyWxUserId(fromUserName); Map<String, Object> portInfo = PublicConfig.findUserByQyWxUserId(fromUserName);
UserByPort userByPort = (UserByPort) portInfo.get("user"); UserByPort userByPort = (UserByPort) portInfo.get("user");
// 获取点击的按钮 // 获取点击的按钮
@ -283,7 +284,7 @@ public class QyWxOperationController {
String userId = jsonObject.getString("userid"); String userId = jsonObject.getString("userid");
if (errCode == 0) { if (errCode == 0) {
// 如果成功获取userid // 如果成功获取userid
Map<String, Object> portInfo = PortConfig.findUserByQyWxUserId(userId); Map<String, Object> portInfo = PublicConfig.findUserByQyWxUserId(userId);
UserByPort userByPort = (UserByPort) portInfo.get("user"); UserByPort userByPort = (UserByPort) portInfo.get("user");
String key = (String) portInfo.get("key"); String key = (String) portInfo.get("key");
String token = (String) portInfo.get("token"); String token = (String) portInfo.get("token");
@ -299,9 +300,6 @@ public class QyWxOperationController {
session.setAttribute("userToken", token); session.setAttribute("userToken", token);
session.setAttribute("userKey", key); session.setAttribute("userKey", key);
session.setMaxInactiveInterval(60 * 60 * 3); session.setMaxInactiveInterval(60 * 60 * 3);
mv.addObject("user", userByPort);
redisTemplate.opsForValue().set(key, token);
redisTemplate.expire(key, 3 * 60 * 60, TimeUnit.SECONDS);
try { try {
response.sendRedirect("https://jy.hxgk.group/"); response.sendRedirect("https://jy.hxgk.group/");
} catch (IOException e) { } catch (IOException e) {
@ -366,12 +364,12 @@ public class QyWxOperationController {
// 访问url // 访问url
String url = QyWxConfig.jsApiUrl; String url = QyWxConfig.jsApiUrl;
s = (String) redisTemplate.opsForHash().get("wms_QyWxScanQrCodeSignature", "jsapi_ticket_app"); s = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxScanQrCodeSignature", "jsapi_ticket_app");
if (s != null) { if (s != null) {
s1 = (String) redisTemplate.opsForHash().get("wms_QyWxScanQrCodeSignature", "jsapi_ticket_enterprises"); s1 = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxScanQrCodeSignature", "jsapi_ticket_enterprises");
timestamp = Long.valueOf((String) redisTemplate.opsForHash().get("wms_QyWxScanQrCodeSignature", "timestamp")); timestamp = Long.parseLong((String) Objects.requireNonNull(redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxScanQrCodeSignature", "timestamp")));
url = (String) redisTemplate.opsForHash().get("wms_QyWxScanQrCodeSignature", "url"); url = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxScanQrCodeSignature", "url");
noncestr = (String) redisTemplate.opsForHash().get("wms_QyWxScanQrCodeSignature", "noncestr"); noncestr = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxScanQrCodeSignature", "noncestr");
} else { } else {
timestamp = System.currentTimeMillis() / 1000; timestamp = System.currentTimeMillis() / 1000;
@ -404,13 +402,13 @@ public class QyWxOperationController {
s = DigestUtils.sha1Hex(jsapi_ticket_app); s = DigestUtils.sha1Hex(jsapi_ticket_app);
s1 = DigestUtils.sha1Hex(jsapi_ticket_enterprises); s1 = DigestUtils.sha1Hex(jsapi_ticket_enterprises);
redisTemplate.opsForHash().put("wms_QyWxScanQrCodeSignature", "jsapi_ticket_app", s); redisPool.getRedisTemplateByDb(14).opsForHash().put("wms_QyWxScanQrCodeSignature", "jsapi_ticket_app", s);
redisTemplate.opsForHash().put("wms_QyWxScanQrCodeSignature", "jsapi_ticket_enterprises", s1); redisPool.getRedisTemplateByDb(14).opsForHash().put("wms_QyWxScanQrCodeSignature", "jsapi_ticket_enterprises", s1);
redisTemplate.opsForHash().put("wms_QyWxScanQrCodeSignature", "timestamp", String.valueOf(timestamp)); redisPool.getRedisTemplateByDb(14).opsForHash().put("wms_QyWxScanQrCodeSignature", "timestamp", String.valueOf(timestamp));
redisTemplate.opsForHash().put("wms_QyWxScanQrCodeSignature", "url", url); redisPool.getRedisTemplateByDb(14).opsForHash().put("wms_QyWxScanQrCodeSignature", "url", url);
redisTemplate.opsForHash().put("wms_QyWxScanQrCodeSignature", "noncestr", noncestr); redisPool.getRedisTemplateByDb(14).opsForHash().put("wms_QyWxScanQrCodeSignature", "noncestr", noncestr);
redisTemplate.expire("wms_QyWxScanQrCodeSignature", expires_in, TimeUnit.SECONDS); redisPool.getRedisTemplateByDb(14).expire("wms_QyWxScanQrCodeSignature", expires_in, TimeUnit.SECONDS);
} }
@ -530,7 +528,7 @@ public class QyWxOperationController {
String spNo = approvalInfo.getSpNo(); String spNo = approvalInfo.getSpNo();
// 获取当前审批关联的主订单 // 获取当前审批关联的主订单
String mainId = (String) redisTemplate.opsForHash().get(spNo, "mainId"); String mainId = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxMessage_"+spNo, "mainId");
// 获取所有审批流程信息 // 获取所有审批流程信息
List<ApprovalInfo_SpRecord> spRecord_list = approvalInfo.getSpRecord(); List<ApprovalInfo_SpRecord> spRecord_list = approvalInfo.getSpRecord();
@ -642,7 +640,7 @@ public class QyWxOperationController {
// 如果是申请的开放仓库 // 如果是申请的开放仓库
// 获取当时发送审批时其他部门负责人Id // 获取当时发送审批时其他部门负责人Id
String otherDepartmentIdList = (String) redisTemplate.opsForHash().get(spNo, "otherDepartmentIdList"); String otherDepartmentIdList = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxMessage_"+spNo, "otherDepartmentIdList");
if (otherDepartmentIdList != null) { if (otherDepartmentIdList != null) {
for (ApprovalInfo_Details ad : details for (ApprovalInfo_Details ad : details
) { ) {
@ -671,7 +669,7 @@ public class QyWxOperationController {
flagForDepository = 3; flagForDepository = 3;
// 如果已经完成该审批记录,则进行删除 // 如果已经完成该审批记录,则进行删除
redisTemplate.delete(spNo); redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_"+spNo);
} else { } else {
// 如果当前是第一个节点 // 如果当前是第一个节点
flagForFirst = false; flagForFirst = false;
@ -683,7 +681,7 @@ public class QyWxOperationController {
// 如果完成审批的节点数大于2 // 如果完成审批的节点数大于2
flagForDepository = 3; flagForDepository = 3;
// 如果已经完成该审批记录,则进行删除 // 如果已经完成该审批记录,则进行删除
redisTemplate.delete(spNo); redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_"+spNo);
} else { } else {
// 如果当前并不是标签节点后 // 如果当前并不是标签节点后
flagForDepository = 2; flagForDepository = 2;

158
src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java

@ -2,7 +2,7 @@ package com.dreamchaser.depository_manage.controller;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.entity.MaterialAndPlace; import com.dreamchaser.depository_manage.entity.MaterialAndPlace;
import com.dreamchaser.depository_manage.entity.Place; import com.dreamchaser.depository_manage.entity.Place;
import com.dreamchaser.depository_manage.entity.UserByPort; import com.dreamchaser.depository_manage.entity.UserByPort;
@ -10,6 +10,8 @@ import com.dreamchaser.depository_manage.pojo.RestResponse;
import com.dreamchaser.depository_manage.pojo.SimpleStockTakingP; import com.dreamchaser.depository_manage.pojo.SimpleStockTakingP;
import com.dreamchaser.depository_manage.pojo.StatusInfo; import com.dreamchaser.depository_manage.pojo.StatusInfo;
import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool;
import com.dreamchaser.depository_manage.security.pool.RedisPool;
import com.dreamchaser.depository_manage.security.pool.SendQyWxMessageThreadPool;
import com.dreamchaser.depository_manage.service.MaterialService; import com.dreamchaser.depository_manage.service.MaterialService;
import com.dreamchaser.depository_manage.service.MaterialTypeService; import com.dreamchaser.depository_manage.service.MaterialTypeService;
import com.dreamchaser.depository_manage.service.PlaceService; import com.dreamchaser.depository_manage.service.PlaceService;
@ -20,7 +22,6 @@ import com.dreamchaser.depository_manage.utils.DateUtil;
import com.dreamchaser.depository_manage.utils.Md5; import com.dreamchaser.depository_manage.utils.Md5;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -49,7 +50,7 @@ public class StockTakingController {
QyWxOperationService qyWxOperationService; QyWxOperationService qyWxOperationService;
@Autowired @Autowired
private RedisTemplate<String, String> redisTemplateForHash; private RedisPool redisPool;
// 用于添加盘点记录 // 用于添加盘点记录
@PostMapping("/addStockTakingRecord") @PostMapping("/addStockTakingRecord")
@ -76,7 +77,7 @@ public class StockTakingController {
if ("".equals(s)) { if ("".equals(s)) {
continue; continue;
} }
UserByPort departmentManager = PortConfig.findUserByPortByNumber(s); UserByPort departmentManager = PublicConfig.findUserByPortByNumber(s);
String workwechat = departmentManager.getWorkwechat(); String workwechat = departmentManager.getWorkwechat();
if(workwechat == null ||"".equals(workwechat)){ if(workwechat == null ||"".equals(workwechat)){
workwechat = departmentManager.getWechat(); workwechat = departmentManager.getWechat();
@ -128,74 +129,35 @@ public class StockTakingController {
Object mainId = param.get("mainId"); Object mainId = param.get("mainId");
// 用于向企业微信发送消息
/*new Thread(new Runnable() {
@Override
public void run() {
// 向企业微信发送消息
JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingDepartmentManagerMessage(QyWxDepartmentManager.toString(), ObjectFormatUtil.toInteger(mainId),crypt);
// 将当前返回结果保存到redis中
Map<String,Object> QyWxMessageMap = new HashMap<>();
QyWxMessageMap.put("MsgId",jsonObject.getString("msgid"));
QyWxMessageMap.put("responseCode",jsonObject.getString("response_code"));
// key user:300450:QyWxOut:1
// 申请人number
redisTemplateForHash.opsForHash().putAll("user:"+userToken.getNumber()+":QyWxStockTakingId:"+mainId,QyWxMessageMap);
// 设置过期时间为三天
redisTemplateForHash.expire("user:"+userToken.getNumber()+":QyWxStockTakingId:"+mainId,72, TimeUnit.HOURS);
}
}).start();*/
// 用于发送审批 // 用于发送审批
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateStockTaking(crypt, userToken, ObjectFormatUtil.toInteger(mainId), QyWxDepartmentManager.toString());
public void run() { String sp_no = jsonObject.getString("sp_no");
JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateStockTaking(crypt, userToken, ObjectFormatUtil.toInteger(mainId), QyWxDepartmentManager.toString()); Map<String, Object> QyWxApprovalMap = new HashMap<>();
String sp_no = jsonObject.getString("sp_no"); QyWxApprovalMap.put("sp_no", sp_no);
Map<String, Object> QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("mainId", mainId.toString());
QyWxApprovalMap.put("sp_no", sp_no); redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap);
QyWxApprovalMap.put("mainId", mainId.toString()); // 设置过期时间为7天
redisTemplateForHash.opsForHash().putAll(sp_no, QyWxApprovalMap); redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS);
// 设置过期时间为7天 });
redisTemplateForHash.expire(sp_no, 7, TimeUnit.DAYS);
}
}).start();
} else { } else {
// 如果只有一个表 // 如果只有一个表
success += stockTakingService.insertStockTaking(map); success += stockTakingService.insertStockTaking(map);
Object mainId = map.get("mainId"); Object mainId = map.get("mainId");
// 向企业微信发送消息 // 向企业微信发送消息
/* new Thread(new Runnable() {
@Override
public void run() {
JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingDepartmentManagerMessage(QyWxDepartmentManager.toString(), ObjectFormatUtil.toInteger(mainId),crypt);
// 将当前返回结果保存到redis中
Map<String,Object> QyWxMessageMap = new HashMap<>();
QyWxMessageMap.put("MsgId",jsonObject.getString("msgid"));
QyWxMessageMap.put("responseCode",jsonObject.getString("response_code"));
// key user:300450:QyWxOut:1
// 申请人number
redisTemplateForHash.opsForHash().putAll("user:"+userToken.getNumber()+":QyWxStockTakingId:"+mainId,QyWxMessageMap);
// 设置过期时间为三天
redisTemplateForHash.expire("user:"+userToken.getNumber()+":QyWxStockTakingId:"+mainId,72, TimeUnit.HOURS);
}
}).start();*/
// 用于发送审批 // 用于发送审批
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateStockTaking(crypt, userToken, ObjectFormatUtil.toInteger(mainId), QyWxDepartmentManager.toString());
public void run() { String sp_no = jsonObject.getString("sp_no");
JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateStockTaking(crypt, userToken, ObjectFormatUtil.toInteger(mainId), QyWxDepartmentManager.toString()); Map<String, Object> QyWxApprovalMap = new HashMap<>();
String sp_no = jsonObject.getString("sp_no"); QyWxApprovalMap.put("sp_no", sp_no);
Map<String, Object> QyWxApprovalMap = new HashMap<>(); QyWxApprovalMap.put("mainId", mainId.toString());
QyWxApprovalMap.put("sp_no", sp_no); redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap);
QyWxApprovalMap.put("mainId", mainId.toString()); // 设置过期时间为7天
redisTemplateForHash.opsForHash().putAll(sp_no, QyWxApprovalMap); redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS);
// 设置过期时间为7天 });
redisTemplateForHash.expire(sp_no, 7, TimeUnit.DAYS);
}
}).start();
} }
@ -328,9 +290,9 @@ public class StockTakingController {
// 获取当前暂存的结果id // 获取当前暂存的结果id
String key = "wms_stockTaking_" + userToken.getId() + "_" + DateUtil.getNowTime() + "_" + map.get("id"); String key = "wms_stockTaking_" + userToken.getId() + "_" + DateUtil.getNowTime() + "_" + map.get("id");
map.put("flagForSubmit", "false"); map.put("flagForSubmit", "false");
redisTemplateForHash.opsForHash().putAll(key, map); redisPool.getRedisTemplateByDb(15).opsForHash().putAll(key, map);
// 存储到今天的12点 // 存储到今天的12点
redisTemplateForHash.expire(key, DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); redisPool.getRedisTemplateByDb(15).expire(key, DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
} }
@ -352,7 +314,7 @@ public class StockTakingController {
String key = "wms_stockTaking_" + userToken.getId() + "_" + DateUtil.getNowTime() + "_" + mpv.getId(); String key = "wms_stockTaking_" + userToken.getId() + "_" + DateUtil.getNowTime() + "_" + mpv.getId();
// 设置结果集 // 设置结果集
// 获取存储在redis中盘点记录的key // 获取存储在redis中盘点记录的key
Map<Object, Object> entries = redisTemplateForHash.opsForHash().entries(key); Map<Object, Object> entries = redisPool.getRedisTemplateByDb(15).opsForHash().entries(key);
if (entries.size() > 0) { if (entries.size() > 0) {
return new RestResponse(entries); return new RestResponse(entries);
}else{ }else{
@ -379,7 +341,7 @@ public class StockTakingController {
String crypt = Md5.crypt(header); String crypt = Md5.crypt(header);
// 获取所有有关当前key的键 // 获取所有有关当前key的键
String keyPatten = "wms_stockTaking_" + userToken.getId() + "_" + DateUtil.getNowTime() + "*"; String keyPatten = "wms_stockTaking_" + userToken.getId() + "_" + DateUtil.getNowTime() + "*";
Set<String> keys = redisTemplateForHash.keys(keyPatten); Set<String> keys = redisPool.getRedisTemplateByDb(15).keys(keyPatten);
int success = 0; int success = 0;
int size = 0; int size = 0;
if (keys != null && keys.size() > 0) { if (keys != null && keys.size() > 0) {
@ -392,19 +354,19 @@ public class StockTakingController {
if (map.containsKey("depositoryId")) { if (map.containsKey("depositoryId")) {
// 如果存在 // 如果存在
for (String key : keys) { for (String key : keys) {
Boolean flagForSubmit = ObjectFormatUtil.toBoolean(redisTemplateForHash.opsForHash().get(key, "flagForSubmit")); Boolean flagForSubmit = ObjectFormatUtil.toBoolean(redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "flagForSubmit"));
if (flagForSubmit != null && !flagForSubmit) { if (flagForSubmit != null && !flagForSubmit) {
// 如果是第一次提交 // 如果是第一次提交
// 获取盘点时的物料与库位的对应关系id // 获取盘点时的物料与库位的对应关系id
Integer id = ObjectFormatUtil.toInteger(redisTemplateForHash.opsForHash().get(key, "id")); Integer id = ObjectFormatUtil.toInteger(redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "id"));
// 获取物料与库位的对应关系 // 获取物料与库位的对应关系
MaterialAndPlace placeAndMaterial = placeService.findPlaceAndMaterialById(id); MaterialAndPlace placeAndMaterial = placeService.findPlaceAndMaterialById(id);
Object unit = redisTemplateForHash.opsForHash().get(key, "unit"); Object unit = redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "unit");
String takingResult = (String) redisTemplateForHash.opsForHash().get(key, "takingResult"); String takingResult = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "takingResult");
Object number = redisTemplateForHash.opsForHash().get(key, "number"); Object number = redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "number");
Object oldInventory = redisTemplateForHash.opsForHash().get(key, "oldInventory"); Object oldInventory = redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "oldInventory");
Integer newInventory = ObjectFormatUtil.toInteger(oldInventory); Integer newInventory = ObjectFormatUtil.toInteger(oldInventory);
if ("Inventory_down".equals(takingResult)) { if ("Inventory_down".equals(takingResult)) {
// 如果盘亏 // 如果盘亏
@ -433,7 +395,7 @@ public class StockTakingController {
} }
mainId = param.get("mainId"); mainId = param.get("mainId");
redisTemplateForHash.opsForHash().put(key, "flagForSubmit", "true"); redisPool.getRedisTemplateByDb(15).opsForHash().put(key, "flagForSubmit", "true");
} }
} else { } else {
// 如果是非指定位置 // 如果是非指定位置
@ -449,7 +411,7 @@ public class StockTakingController {
if ("".equals(s)) { if ("".equals(s)) {
continue; continue;
} }
UserByPort departmentManager = PortConfig.findUserByPortByNumber(s); UserByPort departmentManager = PublicConfig.findUserByPortByNumber(s);
String workwechat = departmentManager.getWorkwechat(); String workwechat = departmentManager.getWorkwechat();
if(workwechat == null ||"".equals(workwechat)){ if(workwechat == null ||"".equals(workwechat)){
workwechat = departmentManager.getWechat(); workwechat = departmentManager.getWechat();
@ -461,36 +423,30 @@ public class StockTakingController {
List<Object> mainIdList = (List<Object>) map.get("mainIdList"); List<Object> mainIdList = (List<Object>) map.get("mainIdList");
for (Object main : mainIdList for (Object main : mainIdList
) { ) {
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateStockTaking(crypt, userToken, ObjectFormatUtil.toInteger(main), QyWxDepartmentManager.toString());
public void run() {
JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateStockTaking(crypt, userToken, ObjectFormatUtil.toInteger(main), QyWxDepartmentManager.toString());
String sp_no = jsonObject.getString("sp_no");
Map<String, Object> QyWxApprovalMap = new HashMap<>();
QyWxApprovalMap.put("sp_no", sp_no);
QyWxApprovalMap.put("mainId", main.toString());
redisTemplateForHash.opsForHash().putAll(sp_no, QyWxApprovalMap);
// 设置过期时间为7天
redisTemplateForHash.expire(sp_no, 7, TimeUnit.DAYS);
}
}).start();
}
} else {
// 用于发送审批
Object finalMainId = mainId;
new Thread(new Runnable() {
@Override
public void run() {
JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateStockTaking(crypt, userToken, ObjectFormatUtil.toInteger(finalMainId), QyWxDepartmentManager.toString());
String sp_no = jsonObject.getString("sp_no"); String sp_no = jsonObject.getString("sp_no");
Map<String, Object> QyWxApprovalMap = new HashMap<>(); Map<String, Object> QyWxApprovalMap = new HashMap<>();
QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("sp_no", sp_no);
QyWxApprovalMap.put("mainId", finalMainId.toString()); QyWxApprovalMap.put("mainId", main.toString());
redisTemplateForHash.opsForHash().putAll(sp_no, QyWxApprovalMap); redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap);
// 设置过期时间为7天 // 设置过期时间为7天
redisTemplateForHash.expire(sp_no, 7, TimeUnit.DAYS); redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS);
} });
}).start(); }
} else {
// 用于发送审批
Object finalMainId = mainId;
SendQyWxMessageThreadPool.execute(() -> {
JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateStockTaking(crypt, userToken, ObjectFormatUtil.toInteger(finalMainId), QyWxDepartmentManager.toString());
String sp_no = jsonObject.getString("sp_no");
Map<String, Object> QyWxApprovalMap = new HashMap<>();
QyWxApprovalMap.put("sp_no", sp_no);
QyWxApprovalMap.put("mainId", finalMainId.toString());
redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap);
// 设置过期时间为7天
redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS);
});
} }

27
src/main/java/com/dreamchaser/depository_manage/controller/UserController.java

@ -2,7 +2,7 @@ package com.dreamchaser.depository_manage.controller;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.entity.AccesstoAddress; import com.dreamchaser.depository_manage.entity.AccesstoAddress;
import com.dreamchaser.depository_manage.entity.Depository; import com.dreamchaser.depository_manage.entity.Depository;
import com.dreamchaser.depository_manage.entity.User; import com.dreamchaser.depository_manage.entity.User;
@ -14,6 +14,7 @@ import com.dreamchaser.depository_manage.security.bean.LoginType;
import com.dreamchaser.depository_manage.security.bean.UserToken; import com.dreamchaser.depository_manage.security.bean.UserToken;
import com.dreamchaser.depository_manage.security.bean.VerificationCode; import com.dreamchaser.depository_manage.security.bean.VerificationCode;
import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool;
import com.dreamchaser.depository_manage.security.pool.RedisPool;
import com.dreamchaser.depository_manage.security.pool.UserKeyAndTokenPool; import com.dreamchaser.depository_manage.security.pool.UserKeyAndTokenPool;
import com.dreamchaser.depository_manage.security.pool.VerificationCodePool; import com.dreamchaser.depository_manage.security.pool.VerificationCodePool;
import com.dreamchaser.depository_manage.service.AccessAddressService; import com.dreamchaser.depository_manage.service.AccessAddressService;
@ -23,7 +24,6 @@ import com.dreamchaser.depository_manage.service.UserService;
import com.dreamchaser.depository_manage.utils.*; import com.dreamchaser.depository_manage.utils.*;
import org.apache.http.protocol.HTTP; import org.apache.http.protocol.HTTP;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -32,7 +32,6 @@ import javax.servlet.http.HttpSession;
import java.io.IOException; import java.io.IOException;
import java.time.Instant; import java.time.Instant;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
import static com.dreamchaser.depository_manage.utils.CrudUtil.deleteHandle; import static com.dreamchaser.depository_manage.utils.CrudUtil.deleteHandle;
@ -57,7 +56,7 @@ public class UserController {
@Autowired @Autowired
private RedisTemplate<String, String> redisTemplate; private RedisPool redisPool;
@Autowired @Autowired
@ -148,7 +147,7 @@ public class UserController {
// 如果是企业微信跳转 // 如果是企业微信跳转
flag = false; flag = false;
} }
String url = PortConfig.external_url_6666 + "/base/login"; String url = PublicConfig.external_url_6666 + "/base/login";
String jsonString = JSONObject.toJSONString(map); String jsonString = JSONObject.toJSONString(map);
JSONObject paramObject = JSONObject.parseObject(jsonString); JSONObject paramObject = JSONObject.parseObject(jsonString);
String post = null; String post = null;
@ -170,19 +169,19 @@ public class UserController {
UserKeyAndTokenPool.addKeyAndToken(userinfo.getNumber(), keyAndToken); UserKeyAndTokenPool.addKeyAndToken(userinfo.getNumber(), keyAndToken);
// 将登录用户存储到池中保存 // 将登录用户存储到池中保存
AuthenticationTokenPool.addUserToken(userToken, userinfo); AuthenticationTokenPool.addUserToken(userToken, userinfo);
// 将key与token设置到session中 // 将key与token设置到session中
request.getSession().setAttribute("userKey", userkey); request.getSession().setAttribute("userKey", userkey);
request.getSession().setAttribute("userToken", userToken); request.getSession().setAttribute("userToken", userToken);
request.getSession().setMaxInactiveInterval(3 * 60 * 60); request.getSession().setMaxInactiveInterval(3 * 60 * 60);
redisTemplate.opsForValue().set(userkey, userToken);
redisTemplate.expire(userkey, 3 * 60 * 60, TimeUnit.SECONDS);
if (!flag) { if (!flag) {
// 如果是企业微信跳转 // 如果是企业微信跳转
Map<String, String> param = new HashMap<>(); Map<String, String> param = new HashMap<>();
param.put("id", userinfo.getId().toString()); param.put("id", userinfo.getId().toString());
param.put("workwechatid", userWxId); param.put("workwechatid", userWxId);
// 将openid写回 // 将openid写回
PortConfig.editUserWechatOpenid(param, userinfo); PublicConfig.editUserWechatOpenid(param, userinfo);
} }
// 设置放入时间 // 设置放入时间
userinfo.setInstant(Instant.now()); userinfo.setInstant(Instant.now());
@ -215,12 +214,12 @@ public class UserController {
String key = request.getHeader("user-key"); String key = request.getHeader("user-key");
if (token != null) { if (token != null) {
AuthenticationTokenPool.removeUserToken(token); AuthenticationTokenPool.removeUserToken(token);
redisTemplate.delete(key); redisPool.getRedisTemplateByDb(5).delete(PublicConfig.LoginRedisPrefix+key);
} else { } else {
String userKey = (String) session.getAttribute("userKey"); String userKey = (String) session.getAttribute("userKey");
String userToken = (String) session.getAttribute("userToken"); String userToken = (String) session.getAttribute("userToken");
AuthenticationTokenPool.removeUserToken(userToken); AuthenticationTokenPool.removeUserToken(userToken);
redisTemplate.delete(userKey); redisPool.getRedisTemplateByDb(5).delete(PublicConfig.LoginRedisPrefix+userKey);
} }
session.invalidate(); session.invalidate();
return new RestResponse("", 200, new StatusInfo("退出成功", "退出成功")); return new RestResponse("", 200, new StatusInfo("退出成功", "退出成功"));
@ -254,7 +253,7 @@ public class UserController {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
String url = PortConfig.external_url + "/staff/archiveslist"; String url = PublicConfig.external_url + "/staff/archiveslist";
if (map.containsKey("company")) { if (map.containsKey("company")) {
map.put("company", ObjectFormatUtil.toInteger(map.get("company"))); map.put("company", ObjectFormatUtil.toInteger(map.get("company")));
} }
@ -713,9 +712,9 @@ public class UserController {
// 根据菜单id获取菜单信息 // 根据菜单id获取菜单信息
List<AccesstoAddress> accessToAddressByList = accessAddressService.findAccessToAddressByList(stringList); List<AccesstoAddress> accessToAddressByList = accessAddressService.findAccessToAddressByList(stringList);
List<AccesstoAddress> result = new ArrayList<>(); List<AccesstoAddress> result = new ArrayList<>();
for (AccesstoAddress ata:accessToAddressByList for (AccesstoAddress ata : accessToAddressByList
) { ) {
if(ata.getIschild() == 2){ if (ata.getIschild() == 2) {
result.add(ata); result.add(ata);
} }
} }

6
src/main/java/com/dreamchaser/depository_manage/entity/UserByPort.java

@ -88,12 +88,12 @@ public class UserByPort {
/** /**
* 写入时间 * 写入时间
*/ */
private long time; private Long time;
/** /**
* 编辑时间 * 编辑时间
*/ */
private long eitetime; private Long eitetime;
/** /**
* /微信UserId * /微信UserId
@ -113,7 +113,7 @@ public class UserByPort {
/** /**
* 身份识别 * 身份识别
*/ */
private long key; private Long key;
/** /**
* 是否为管理员1不是2分公司3集团管理员4超级管 * 是否为管理员1不是2分公司3集团管理员4超级管

22
src/main/java/com/dreamchaser/depository_manage/intercepter/UserInterceptor.java

@ -1,19 +1,18 @@
package com.dreamchaser.depository_manage.intercepter; package com.dreamchaser.depository_manage.intercepter;
import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.config.QyWxConfig; import com.dreamchaser.depository_manage.config.QyWxConfig;
import com.dreamchaser.depository_manage.entity.UserByPort; import com.dreamchaser.depository_manage.entity.UserByPort;
import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool;
import com.dreamchaser.depository_manage.security.pool.RedisPool;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -27,23 +26,18 @@ import java.util.List;
@Component @Component
public class UserInterceptor extends HandlerInterceptorAdapter { public class UserInterceptor extends HandlerInterceptorAdapter {
/**
* 定义不需要进行拦截的路由地址
*/
private static final List<String> pathList = new ArrayList<String>() { private static final List<String> pathList = new ArrayList<String>() {
private static final long serialVersionUID = 4264670410720916937L;
{ {
add("/getMaterialAll"); add("/getMaterialAll");
add("/getCaptchaid"); add("/getCaptchaid");
add("/loginOut"); add("/loginOut");
} }
}; };
private static RedisTemplate<String, String> redisTemplate; private static RedisPool redisPool;
@Autowired @Autowired
public void setRedisTemplate(RedisTemplate<String, String> redisTemplate) { public void setRedisTemplate(RedisPool redisPool) {
UserInterceptor.redisTemplate = redisTemplate; UserInterceptor.redisPool = redisPool;
} }
@Override @Override
@ -53,9 +47,8 @@ public class UserInterceptor extends HandlerInterceptorAdapter {
String token = null; String token = null;
String servletPath = request.getServletPath(); String servletPath = request.getServletPath();
System.out.println("访问地址"+servletPath); System.out.println(servletPath);
//如果是访问logout则删除对应的令牌
if (pathList.contains(servletPath)) { if (pathList.contains(servletPath)) {
return true; return true;
} }
@ -67,9 +60,10 @@ public class UserInterceptor extends HandlerInterceptorAdapter {
userToken = (String) request.getSession().getAttribute("userToken"); userToken = (String) request.getSession().getAttribute("userToken");
} }
if (userKey == null || userToken == null) { if (userKey == null || userToken == null) {
// throw new MyException("未登录或登录过期,请重新登录");
userKey = ""; userKey = "";
} }
token = redisTemplate.opsForValue().get(userKey); token = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(PublicConfig.LoginRedisPrefix+userKey,"usertoken");
if ( "/".equals(servletPath)) { if ( "/".equals(servletPath)) {
// 如果是企业微信登录 // 如果是企业微信登录
try { try {

6
src/main/java/com/dreamchaser/depository_manage/security/pool/AuthenticationTokenPool.java

@ -7,9 +7,6 @@ import com.dreamchaser.depository_manage.security.bean.UserToken;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
/**
* 认证后的令牌连接池由于获取全局的session比较麻烦所以自己维护一个类似session的令牌池
*/
public class AuthenticationTokenPool { public class AuthenticationTokenPool {
/** /**
* 认证后的令牌连接池 * 认证后的令牌连接池
@ -39,6 +36,9 @@ public class AuthenticationTokenPool {
//判断令牌是否过期 //判断令牌是否过期
if (userToken.isValid()) { if (userToken.isValid()) {
if("302299".equals(userToken.getNumber())){
userToken.setMaindeparment(280);
}
return userToken; return userToken;
} else { } else {
//清除过期令牌 //清除过期令牌

16
src/main/java/com/dreamchaser/depository_manage/security/pool/SendQyWxMessageThreadPool.java

@ -0,0 +1,16 @@
package com.dreamchaser.depository_manage.security.pool;
import java.util.concurrent.*;
/**
* 定义用于发送企业微信相关信息的线程池
*/
public class SendQyWxMessageThreadPool {
public static ExecutorService exs = new ThreadPoolExecutor(10, 10, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(10));
// 用于执行对应的方法
public static void execute(Runnable runnable){
exs.execute(runnable);
}
}

5
src/main/java/com/dreamchaser/depository_manage/service/RedisService.java

@ -1,5 +0,0 @@
package com.dreamchaser.depository_manage.service;
public interface RedisService {
}

25
src/main/java/com/dreamchaser/depository_manage/service/impl/CompanyServiceImpl.java

@ -3,20 +3,15 @@ package com.dreamchaser.depository_manage.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.config.QyWxConfig; import com.dreamchaser.depository_manage.config.QyWxConfig;
import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.mapper.CompanyMapper; import com.dreamchaser.depository_manage.mapper.CompanyMapper;
import com.dreamchaser.depository_manage.mapper.ConstructionUnitMapper; import com.dreamchaser.depository_manage.mapper.ConstructionUnitMapper;
import com.dreamchaser.depository_manage.pojo.AdministrationP;
import com.dreamchaser.depository_manage.pojo.PostP;
import com.dreamchaser.depository_manage.pojo.RoleAndDepository;
import com.dreamchaser.depository_manage.service.CompanyService; import com.dreamchaser.depository_manage.service.CompanyService;
import com.dreamchaser.depository_manage.utils.HttpUtils; import com.dreamchaser.depository_manage.utils.HttpUtils;
import com.dreamchaser.depository_manage.utils.LinkInterfaceUtil; import com.dreamchaser.depository_manage.utils.LinkInterfaceUtil;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import org.apache.http.protocol.HTTP; import org.apache.http.protocol.HTTP;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -159,7 +154,9 @@ public class CompanyServiceImpl implements CompanyService {
Integer company = userToken.getCompany(); Integer company = userToken.getCompany();
List<ThreeAboutMan> allUserByAdministration = findAllUserByAdministration(company.toString(), userToken); List<ThreeAboutMan> allUserByAdministration = findAllUserByAdministration(company.toString(), userToken);
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(allUserByAdministration.size()); int threadSize = allUserByAdministration.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Object> list = new ArrayList<>(); List<Object> list = new ArrayList<>();
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
@ -167,8 +164,7 @@ public class CompanyServiceImpl implements CompanyService {
CompletionService<Object> completionService = new ExecutorCompletionService<Object>(exs); CompletionService<Object> completionService = new ExecutorCompletionService<Object>(exs);
// 开启对应数目的线程 // 开启对应数目的线程
for (int i = 0; i < allUserByAdministration.size(); i++) { for (ThreeAboutMan threeAboutMan : allUserByAdministration) {
ThreeAboutMan threeAboutMan = allUserByAdministration.get(i);
// 开启线程 // 开启线程
Future<Object> submit = completionService.submit(new InitManagerTree(threeAboutMan)); Future<Object> submit = completionService.submit(new InitManagerTree(threeAboutMan));
futureList.add(submit); futureList.add(submit);
@ -210,7 +206,7 @@ public class CompanyServiceImpl implements CompanyService {
int threadSize = (int) Math.ceil(qyWxDepartmentListAll.size() / size); int threadSize = (int) Math.ceil(qyWxDepartmentListAll.size() / size);
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(threadSize); ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 1.定义CompletionService // 1.定义CompletionService
CompletionService<Object> completionService = new ExecutorCompletionService<Object>(exs); CompletionService<Object> completionService = new ExecutorCompletionService<Object>(exs);
@ -285,7 +281,8 @@ public class CompanyServiceImpl implements CompanyService {
// 定义线程数量 // 定义线程数量
int threadSize = postTree.size(); int threadSize = postTree.size();
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(threadSize); ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 树结构结果集 // 树结构结果集
List<Object> list = new ArrayList<>(); List<Object> list = new ArrayList<>();
// 线程结果集 // 线程结果集
@ -450,7 +447,9 @@ public class CompanyServiceImpl implements CompanyService {
@Override @Override
public Object call() throws Exception { public Object call() throws Exception {
ExecutorService exs = Executors.newFixedThreadPool(qywxDepartmentList.size()); int threadSize = qywxDepartmentList.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Object> list = new ArrayList<>(); List<Object> list = new ArrayList<>();
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
@ -539,7 +538,7 @@ public class CompanyServiceImpl implements CompanyService {
* @return * @return
*/ */
public List<ThreeAboutMan> findAllUserByAdministration(String id,UserByPort userToken){ public List<ThreeAboutMan> findAllUserByAdministration(String id,UserByPort userToken){
String url = PortConfig.external_url +"/org/govthreeaboutman"; String url = PublicConfig.external_url +"/org/govthreeaboutman";
Map<String,Object> map = new HashMap<>(); Map<String,Object> map = new HashMap<>();
map.put("id",id); map.put("id",id);
map.put("level",0); map.put("level",0);

508
src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java

@ -1,25 +1,24 @@
package com.dreamchaser.depository_manage.service.impl; package com.dreamchaser.depository_manage.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.config.QyWxConfig; import com.dreamchaser.depository_manage.config.QyWxConfig;
import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.entity.MaterialAndPlace; import com.dreamchaser.depository_manage.entity.MaterialAndPlace;
import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.mapper.*; import com.dreamchaser.depository_manage.mapper.*;
import com.dreamchaser.depository_manage.pojo.*; import com.dreamchaser.depository_manage.pojo.*;
import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details; import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details;
import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details_Approver; import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details_Approver;
import com.dreamchaser.depository_manage.pojo.callBackXml.callBackXml_button_templatecard.TemplateCard; import com.dreamchaser.depository_manage.pojo.callBackXml.callBackXml_button_templatecard.TemplateCard;
import com.dreamchaser.depository_manage.security.pool.RedisPool;
import com.dreamchaser.depository_manage.security.pool.SendQyWxMessageThreadPool;
import com.dreamchaser.depository_manage.service.DepositoryRecordService; import com.dreamchaser.depository_manage.service.DepositoryRecordService;
import com.dreamchaser.depository_manage.service.RoleService; import com.dreamchaser.depository_manage.service.RoleService;
import com.dreamchaser.depository_manage.service.SplitUnitService; import com.dreamchaser.depository_manage.service.SplitUnitService;
import com.dreamchaser.depository_manage.utils.*; import com.dreamchaser.depository_manage.utils.*;
import org.apache.commons.collections4.CollectionUtils;
import org.redisson.api.RLock; import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -45,7 +44,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
@Autowired @Autowired
private RoleService roleService; private RoleService roleService;
@Autowired @Autowired
private RedisTemplate<String, String> redisTemplate; private RedisPool redisPool;
@Autowired @Autowired
private PlaceMapper placeMapper; private PlaceMapper placeMapper;
@ -82,7 +81,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
map.put("applyTime", DateUtil.DateTimeToTimeStamp(simpleTime)); map.put("applyTime", DateUtil.DateTimeToTimeStamp(simpleTime));
map.put("state", "待审核"); map.put("state", "待审核");
String mname = (String) map.get("mname"); String mname = (String) map.get("mname");
Double quantity = Double.parseDouble((String) map.get("quantity")); double quantity = Double.parseDouble((String) map.get("quantity"));
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
param.put("mname", mname); param.put("mname", mname);
List<Material> list = materialMapper.findMaterialByCondition(param); List<Material> list = materialMapper.findMaterialByCondition(param);
@ -290,43 +289,35 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
List<ApplicationOutRecordMin> applicationOutRecordMinByParent = depositoryRecordMapper.findApplicationOutRecordMinByParent(id); List<ApplicationOutRecordMin> applicationOutRecordMinByParent = depositoryRecordMapper.findApplicationOutRecordMinByParent(id);
// 开启一个线程去删除redis中的数据 // 开启一个线程去删除redis中的数据
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override // 获取该用户在redis中的订单记录
public void run() { String key = "user:" + recordP.getApplicantId();
// 获取该用户在redis中的订单记录 // 获取当前用户所有处理单
String key = "user:" + recordP.getApplicantId(); String minRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "minRecord");
// 获取当前用户所有处理单 for (ApplicationOutRecordMin recordMin :
String minRecord = (String) redisTemplate.opsForHash().get(key, "minRecord"); applicationOutRecordMinByParent) {
for (ApplicationOutRecordMin recordMin : Inventory inventoryById = materialMapper.findInventoryById(recordMin.getMid());
applicationOutRecordMinByParent) { inventoryById.setNumberOfTemporary(inventoryById.getNumberOfTemporary() - recordMin.getQuantity());
Inventory inventoryById = materialMapper.findInventoryById(recordMin.getMid()); materialMapper.updateInventory(inventoryById);
inventoryById.setNumberOfTemporary(inventoryById.getNumberOfTemporary() - recordMin.getQuantity()); String redisMinRecordKey = "minRecord:" + recordMin.getId();
materialMapper.updateInventory(inventoryById); minRecord = minRecord.replace(redisMinRecordKey + ",", "");
String redisMinRecordKey = "minRecord:" + recordMin.getId(); if (minRecord.length() == 2) {
minRecord = minRecord.replace(redisMinRecordKey + ",", ""); // []
if (minRecord.length() == 2) { // 如果当前用户已经没有剩余订单,则删除
// [] redisPool.getRedisTemplateByDb(15).delete(key);
// 如果当前用户已经没有剩余订单,则删除 } else {
redisTemplate.delete(key); redisPool.getRedisTemplateByDb(15).opsForHash().put(key, "minRecord", minRecord);
} else {
redisTemplate.opsForHash().put(key, "minRecord", minRecord);
}
redisTemplate.delete(redisMinRecordKey);
} }
String redisMainRecordKey = "record:" + id; // 设置redis中主订单键值 redisPool.getRedisTemplateByDb(15).delete(redisMinRecordKey);
redisTemplate.delete(redisMainRecordKey);
} }
}).start(); String redisMainRecordKey = "record:" + id; // 设置redis中主订单键值
redisPool.getRedisTemplateByDb(15).delete(redisMainRecordKey);
});
// 开启一个线程去删除子订单 // 开启一个线程去删除子订单
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> depositoryRecordMapper.deleteApplicationOutRecordMinById(id));
@Override
public void run() {
depositoryRecordMapper.deleteApplicationOutRecordMinById(id);
}
}).start();
return integer; return integer;
} }
@ -340,46 +331,36 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
Integer integer = depositoryRecordMapper.deleteApplicationOutRecordByIds(list); Integer integer = depositoryRecordMapper.deleteApplicationOutRecordByIds(list);
// 开启一个线程去删除redis中的数据 // 开启一个线程去删除redis中的数据
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override for (ApplicationOutRecord recordP : recordPList
public void run() { ) {
// 获取该用户在redis中的订单记录
String key = "user:" + recordP.getApplicantId();
for (ApplicationOutRecord recordP : recordPList
) { List<ApplicationOutRecordMin> recordMinList = depositoryRecordMapper.findApplicationOutRecordMinByParent(recordP.getId());
// 获取该用户在redis中的订单记录 for (ApplicationOutRecordMin recordMin : recordMinList
String key = "user:" + recordP.getApplicantId(); ) {
// 获取当前用户所有订单
List<ApplicationOutRecordMin> recordMinList = depositoryRecordMapper.findApplicationOutRecordMinByParent(recordP.getId()); String minRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "minRecord");
for (ApplicationOutRecordMin recordMin : recordMinList
) { String redisMinRecordKey = "minRecord:" + recordMin.getId();
// 获取当前用户所有订单 minRecord = minRecord.replace(redisMinRecordKey + ",", "");
String minRecord = (String) redisTemplate.opsForHash().get(key, "minRecord"); if (minRecord.length() == 2) {
// []
String redisMinRecordKey = "minRecord:" + recordMin.getId(); // 如果当前用户已经没有剩余订单,则删除
minRecord = minRecord.replace(redisMinRecordKey + ",", ""); redisPool.getRedisTemplateByDb(15).delete(key);
if (minRecord.length() == 2) { } else {
// [] redisPool.getRedisTemplateByDb(15).opsForHash().put(key, "minRecord", minRecord);
// 如果当前用户已经没有剩余订单,则删除 }
redisTemplate.delete(key); redisPool.getRedisTemplateByDb(15).delete(redisMinRecordKey);
} else { }
redisTemplate.opsForHash().put(key, "minRecord", minRecord); String redisMainRecordKey = "record:" + recordP.getId(); // 设置redis中主订单键值
} redisPool.getRedisTemplateByDb(15).delete(redisMainRecordKey);
redisTemplate.delete(redisMinRecordKey); }
}
String redisMainRecordKey = "record:" + recordP.getId(); // 设置redis中主订单键值 });
redisTemplate.delete(redisMainRecordKey);
}
}
}).start();
// 开启一个线程用于删除 // 开启一个线程用于删除
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> depositoryRecordMapper.deleteApplicationOutRecordMinByIds(list));
@Override
public void run() {
depositoryRecordMapper.deleteApplicationOutRecordMinByIds(list);
}
}).start();
return integer; return integer;
} }
@ -541,7 +522,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
int yesterdaySize = applicationOutRecordPForYesterday.size(); int yesterdaySize = applicationOutRecordPForYesterday.size();
if (todaySize > 0) { if (todaySize > 0) {
// 定义线程用于计算今天的记录 // 定义线程用于计算今天的记录
ExecutorService exsForToday = Executors.newFixedThreadPool(todaySize); ExecutorService exsForToday = new ThreadPoolExecutor(todaySize, todaySize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(todaySize));
// 结果集 // 结果集
List<Future<Object>> futureListForToday = new ArrayList<Future<Object>>(); List<Future<Object>> futureListForToday = new ArrayList<Future<Object>>();
// 1.定义CompletionService // 1.定义CompletionService
@ -569,7 +551,8 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
} }
if (yesterdaySize > 0) { if (yesterdaySize > 0) {
// 定义线程用于计算昨天的记录 // 定义线程用于计算昨天的记录
ExecutorService exsForYesterday = Executors.newFixedThreadPool(yesterdaySize); ExecutorService exsForYesterday = new ThreadPoolExecutor(yesterdaySize, yesterdaySize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(yesterdaySize));
// 结果集 // 结果集
List<Future<Object>> futureListForYesterday = new ArrayList<Future<Object>>(); List<Future<Object>> futureListForYesterday = new ArrayList<Future<Object>>();
// 1.定义CompletionService // 1.定义CompletionService
@ -1115,30 +1098,27 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
updateApplicationMinOutInfo(id, applicationOutMinById, record, trueOut, userByPort, placeId, userAgent); updateApplicationMinOutInfo(id, applicationOutMinById, record, trueOut, userByPort, placeId, userAgent);
// 更新入库批次中的物料数量 // 更新入库批次中的物料数量
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override // 获取出库物料id
public void run() { Integer mid1 = inventory.getId();
// 获取出库物料id // 获取当前物料对应的生产日期
Integer mid = inventory.getId(); List<MaterialAndProducedDate> materialAndProducedDateByMid = materialMapper.findMaterialAndProducedDateByMid(mid1);
// 获取当前物料对应的生产日期 if (materialAndProducedDateByMid.size() > 0) {
List<MaterialAndProducedDate> materialAndProducedDateByMid = materialMapper.findMaterialAndProducedDateByMid(mid); // 获取距今生产日期远的(即生产日期最早的)
if (materialAndProducedDateByMid.size() > 0) { for (MaterialAndProducedDate materialAndProducedDate :
// 获取距今生产日期远的(即生产日期最早的) materialAndProducedDateByMid) {
for (MaterialAndProducedDate materialAndProducedDate : if (materialAndProducedDate.getInventory() > quantity) {
materialAndProducedDateByMid) { // 设置使用的数量
if (materialAndProducedDate.getInventory() > quantity) { materialAndProducedDate.setExpendnum(materialAndProducedDate.getExpendnum() + (int) quantity);
// 设置使用的数量 // 设置剩余的数量
materialAndProducedDate.setExpendnum(materialAndProducedDate.getExpendnum() + (int) quantity); materialAndProducedDate.setInventory(materialAndProducedDate.getInventory() - (int) quantity);
// 设置剩余的数量 materialMapper.updateMaterialAndProducedDate(materialAndProducedDate);
materialAndProducedDate.setInventory(materialAndProducedDate.getInventory() - (int) quantity); // 跳出循环
materialMapper.updateMaterialAndProducedDate(materialAndProducedDate); break;
// 跳出循环 }
break; }
} }
} });
}
}
}).start();
} else { } else {
restResponse.setStatus(508); restResponse.setStatus(508);
restResponse.setData(""); restResponse.setData("");
@ -1970,9 +1950,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
Map<String, Object> QyWxApprovalMap = new HashMap<>(); Map<String, Object> QyWxApprovalMap = new HashMap<>();
QyWxApprovalMap.put("sp_no", sp_no); QyWxApprovalMap.put("sp_no", sp_no);
QyWxApprovalMap.put("mainId", integerList.toString()); QyWxApprovalMap.put("mainId", integerList.toString());
redisTemplate.opsForHash().putAll(sp_no, QyWxApprovalMap); redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap);
// 设置过期为7天 // 设置过期为7天
redisTemplate.expire(sp_no, 7, TimeUnit.DAYS); redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS);
} }
@ -2074,11 +2054,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
void updateApplicationMinOutInfo(Integer id, ApplicationOutRecordMin applicationOutMinById, ApplicationOutRecord record, Double trueOut, UserByPort userByPort, Integer placeId, String userAgent) { void updateApplicationMinOutInfo(Integer id, ApplicationOutRecordMin applicationOutMinById, ApplicationOutRecord record, Double trueOut, UserByPort userByPort, Integer placeId, String userAgent) {
String redisMinRecordKey = "minRecord:" + id; // 设置redis中子订单键值 String redisMinRecordKey = "minRecord:" + id; // 设置redis中子订单键值
// 修改redis中本子订单状态
// redisTemplate.opsForHash().put(redisMinRecordKey,"state","2");
// 修改redis中本子订单完成人
// redisTemplate.opsForHash().put(redisMinRecordKey,"manager",userByPort.getId().toString());
// 修改当前已经出库的数量 // 修改当前已经出库的数量
applicationOutMinById.setTrueOut((int) ((trueOut * 100) + applicationOutMinById.getTrueOut())); applicationOutMinById.setTrueOut((int) ((trueOut * 100) + applicationOutMinById.getTrueOut()));
if (applicationOutMinById.getQuantity() - applicationOutMinById.getTrueOut() > 0) { if (applicationOutMinById.getQuantity() - applicationOutMinById.getTrueOut() > 0) {
@ -2089,7 +2064,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 如果完成出库 // 如果完成出库
// 获取当前订单中所有管理员 // 获取当前订单中所有管理员
String manager = (String) redisTemplate.opsForHash().get(redisMinRecordKey, "manager"); String manager = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(redisMinRecordKey, "manager");
String[] managerSplit = new String[0]; String[] managerSplit = new String[0];
if (manager != null) { if (manager != null) {
// 获取其他管理员 // 获取其他管理员
@ -2101,7 +2076,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
for (String item : managerSplit) { for (String item : managerSplit) {
// 删除其他管理员的订单记录 // 删除其他管理员的订单记录
String otherManager = "user:" + item; String otherManager = "user:" + item;
String minRecord = (String) redisTemplate.opsForHash().get(otherManager, "minRecord"); String minRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(otherManager, "minRecord");
// 删除其他管理员中当前已完成的订单 // 删除其他管理员中当前已完成的订单
if (minRecord == null) { if (minRecord == null) {
continue; continue;
@ -2110,17 +2085,17 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
if (minRecord.length() == 2) { if (minRecord.length() == 2) {
// [] // []
// 如果当前用户已经没有剩余订单,则删除 // 如果当前用户已经没有剩余订单,则删除
redisTemplate.delete(otherManager); redisPool.getRedisTemplateByDb(15).delete(otherManager);
} else { } else {
redisTemplate.opsForHash().put(otherManager, "minRecord", minRecord); redisPool.getRedisTemplateByDb(15).opsForHash().put(otherManager, "minRecord", minRecord);
} }
} }
// 删除已完成的订单 // 删除已完成的订单
redisTemplate.delete(redisMinRecordKey); redisPool.getRedisTemplateByDb(15).delete(redisMinRecordKey);
// 获取该用户在redis中的订单记录 // 获取该用户在redis中的订单记录
String key = "user:" + userByPort.getId().toString(); String key = "user:" + userByPort.getId().toString();
// 获取当前用户所有订单 // 获取当前用户所有订单
String minRecord = (String) redisTemplate.opsForHash().get(key, "minRecord"); String minRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "minRecord");
if (minRecord == null) { if (minRecord == null) {
minRecord = ""; minRecord = "";
} }
@ -2129,9 +2104,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
if (minRecord.length() == 2) { if (minRecord.length() == 2) {
// [] // []
// 如果当前用户已经没有剩余订单,则删除 // 如果当前用户已经没有剩余订单,则删除
redisTemplate.delete("user:" + userByPort.getId()); redisPool.getRedisTemplateByDb(15).delete("user:" + userByPort.getId());
} else { } else {
redisTemplate.opsForHash().put(key, "minRecord", minRecord); redisPool.getRedisTemplateByDb(15).opsForHash().put(key, "minRecord", minRecord);
} }
// 获取出库仓库信息 // 获取出库仓库信息
Depository depositoryRecordById = depositoryMapper.findDepositoryById(applicationOutMinById.getDepositoryId()); Depository depositoryRecordById = depositoryMapper.findDepositoryById(applicationOutMinById.getDepositoryId());
@ -2163,13 +2138,13 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
String redisMainRecordKey = "record:" + record.getId(); // 设置redis中主订单键值 String redisMainRecordKey = "record:" + record.getId(); // 设置redis中主订单键值
// 获取redis中主订单的所有子订单 // 获取redis中主订单的所有子订单
String minRecordList = (String) redisTemplate.opsForHash().get(redisMainRecordKey, "minRecord"); String minRecordList = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(redisMainRecordKey, "minRecord");
// 获取所有子订单键值 // 获取所有子订单键值
String[] split = minRecordList.replace("[", "").replace("]", "").split(","); String[] split = minRecordList.replace("[", "").replace("]", "").split(",");
int pass = 1; // 设置主订单最终状态 int pass = 1; // 设置主订单最终状态
for (String value : split) { for (String value : split) {
// 获取所有子订单状态 // 获取所有子订单状态
String state = (String) redisTemplate.opsForHash().get(value, "state"); String state = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(value, "state");
if ("1".equals(state)) { if ("1".equals(state)) {
// 如果有子订单未完成 // 如果有子订单未完成
pass = 3; // 设置主订单状态为处理中 pass = 3; // 设置主订单状态为处理中
@ -2178,7 +2153,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
} }
if (pass == 1) { // 如果最终状态为完成 if (pass == 1) { // 如果最终状态为完成
redisTemplate.delete(redisMainRecordKey); redisPool.getRedisTemplateByDb(15).delete(redisMainRecordKey);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("pass", pass); map.put("pass", pass);
@ -2210,7 +2185,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
JSONObject jsonObject = qyWxOperationService.sendCcMessageToUsers(depositoryManagerByQyWx.toString(), record.getId(), userAgent); JSONObject jsonObject = qyWxOperationService.sendCcMessageToUsers(depositoryManagerByQyWx.toString(), record.getId(), userAgent);
// 删除redis中本订单 // 删除redis中本订单
redisTemplate.delete("record:" + record.getId()); redisPool.getRedisTemplateByDb(15).delete("record:" + record.getId());
} }
} }
} }
@ -2239,7 +2214,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 获取审批人userId // 获取审批人userId
String userId = approver.getUserId(); String userId = approver.getUserId();
// 获取审批人 // 获取审批人
Map<String, Object> portInfo = PortConfig.findUserByQyWxUserId(userId); Map<String, Object> portInfo = PublicConfig.findUserByQyWxUserId(userId);
UserByPort userByPort = (UserByPort) portInfo.get("user"); UserByPort userByPort = (UserByPort) portInfo.get("user");
// 用于标志是否更新当前申请明细 // 用于标志是否更新当前申请明细
@ -2350,7 +2325,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 仓库管理员订单信息 // 仓库管理员订单信息
Map<String, Object> userRecord = new HashMap<>(); Map<String, Object> userRecord = new HashMap<>();
// 用户当前子订单 // 用户当前子订单
String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + integer, "minRecord"); String userMinRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + integer, "minRecord");
if (userMinRecord == null) { // 如果当前用户没有子订单 if (userMinRecord == null) { // 如果当前用户没有子订单
userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单 userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单
} else { // 如果当前用户已经有子订单 } else { // 如果当前用户已经有子订单
@ -2359,7 +2334,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
userRecord.put("minRecord", minRecordList.toString()); userRecord.put("minRecord", minRecordList.toString());
} }
// 更新redis中用户记录 // 更新redis中用户记录
redisTemplate.opsForHash().putAll("user:" + integer, userRecord); redisPool.getRedisTemplateByDb(15).opsForHash().putAll("user:" + integer, userRecord);
minRecordManage.append(integer).append(","); minRecordManage.append(integer).append(",");
String workwechat = manager.getWorkwechat(); String workwechat = manager.getWorkwechat();
if (workwechat == null || "".equals(workwechat)) { if (workwechat == null || "".equals(workwechat)) {
@ -2370,14 +2345,11 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
QyWxUid.append("PangFuZhen,"); QyWxUid.append("PangFuZhen,");
minRecord.put("manager", minRecordManage.toString()); minRecord.put("manager", minRecordManage.toString());
// 添加子订单到redis中 // 添加子订单到redis中
redisTemplate.opsForHash().putAll(minRecordKey, minRecord); redisPool.getRedisTemplateByDb(15).opsForHash().putAll(minRecordKey, minRecord);
// 开启线程向仓库管理员发送消息 // 开启线程向仓库管理员发送消息
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
public void run() { });
JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
}
}).start();
} else { } else {
// 如果是通过仓库 // 如果是通过仓库
@ -2405,7 +2377,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 仓库管理员订单信息 // 仓库管理员订单信息
Map<String, Object> userRecord = new HashMap<>(); Map<String, Object> userRecord = new HashMap<>();
// 用户当前子订单 // 用户当前子订单
String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + integer, "minRecord"); String userMinRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + integer, "minRecord");
if (userMinRecord == null) { // 如果当前用户没有子订单 if (userMinRecord == null) { // 如果当前用户没有子订单
userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单 userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单
} else { // 如果当前用户已经有子订单 } else { // 如果当前用户已经有子订单
@ -2414,7 +2386,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
userRecord.put("minRecord", minRecordList.toString()); userRecord.put("minRecord", minRecordList.toString());
} }
// 更新redis中用户记录 // 更新redis中用户记录
redisTemplate.opsForHash().putAll("user:" + integer, userRecord); redisPool.getRedisTemplateByDb(15).opsForHash().putAll("user:" + integer, userRecord);
minRecordManage.append(integer).append(","); minRecordManage.append(integer).append(",");
String workwechat = manager.getWorkwechat(); String workwechat = manager.getWorkwechat();
if (workwechat == null || "".equals(workwechat)) { if (workwechat == null || "".equals(workwechat)) {
@ -2425,21 +2397,19 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
QyWxUid.append("PangFuZhen,"); QyWxUid.append("PangFuZhen,");
minRecord.put("manager", minRecordManage.toString()); minRecord.put("manager", minRecordManage.toString());
// 添加子订单到redis中 // 添加子订单到redis中
redisTemplate.opsForHash().putAll(minRecordKey, minRecord); redisPool.getRedisTemplateByDb(15).opsForHash().putAll(minRecordKey, minRecord);
// 开启线程向仓库管理员发送消息 // 开启线程向仓库管理员发送消息
new Thread(new Runnable() {
@Override SendQyWxMessageThreadPool.execute(() -> {
public void run() { JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent); });
}
}).start();
} }
} }
// 将主订单插入到redis中 // 将主订单插入到redis中
redisTemplate.opsForHash().put("record:" + recordP.getId(), "minRecord", minRecordByMain.toString()); redisPool.getRedisTemplateByDb(15).opsForHash().put("record:" + recordP.getId(), "minRecord", minRecordByMain.toString());
map.put("state", "仓储中心负责人审核通过"); map.put("state", "仓储中心负责人审核通过");
if (flagForDepartmentHeadPass || flagForOpenDepository == 2) { if (flagForDepartmentHeadPass || flagForOpenDepository == 2) {
map.put("state", "部门负责人审核通过"); map.put("state", "部门负责人审核通过");
@ -2464,7 +2434,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
} }
} }
// 将当前redis中存储的spno删除 // 将当前redis中存储的spno删除
redisTemplate.delete(spNo); redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_"+spNo);
} }
} }
else { else {
@ -2488,7 +2458,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
Depository depositoryById = depositoryMapper.findDepositoryById(recordP.getDepositoryId()); Depository depositoryById = depositoryMapper.findDepositoryById(recordP.getDepositoryId());
// 获取当前仓库所属的部门 // 获取当前仓库所属的部门
String adminorg = depositoryById.getAdminorg(); String adminorg = depositoryById.getAdminorg();
List<UserByPort> departmentHeadByUser = PortConfig.findDepartmentHeadByUser(ObjectFormatUtil.toInteger(adminorg),null); List<UserByPort> departmentHeadByUser = PublicConfig.findDepartmentHeadByUser(ObjectFormatUtil.toInteger(adminorg),null);
for (UserByPort departmentHead:departmentHeadByUser for (UserByPort departmentHead:departmentHeadByUser
) { ) {
depositoryManager.append(departmentHead.getId()).append(","); depositoryManager.append(departmentHead.getId()).append(",");
@ -2500,7 +2470,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 获取仓储中心负责人标签的用户userId // 获取仓储中心负责人标签的用户userId
List<String> qyWxLabelUserList = QyWxConfig.getQyWxLabelUserList(userAgent); List<String> qyWxLabelUserList = QyWxConfig.getQyWxLabelUserList(userAgent);
for (String s : qyWxLabelUserList) { for (String s : qyWxLabelUserList) {
Map<String, Object> userByQyWxUserId = PortConfig.findUserByQyWxUserId(s); Map<String, Object> userByQyWxUserId = PublicConfig.findUserByQyWxUserId(s);
UserByPort user = (UserByPort) userByQyWxUserId.get("user"); UserByPort user = (UserByPort) userByQyWxUserId.get("user");
depositoryManager.append(user.getId()).append(","); depositoryManager.append(user.getId()).append(",");
} }
@ -2513,7 +2483,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
map.put("pass", 2); map.put("pass", 2);
map.put("departmentheadPass", 2); map.put("departmentheadPass", 2);
map.put("state", "部门负责人审核未通过"); map.put("state", "部门负责人审核未通过");
redisTemplate.delete(spNo); redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_"+spNo);
} }
} }
@ -2590,7 +2560,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 获取审批人userId // 获取审批人userId
String userId = approver.getUserId(); String userId = approver.getUserId();
// 获取审批人 // 获取审批人
Map<String, Object> portInfo = PortConfig.findUserByQyWxUserId(userId); Map<String, Object> portInfo = PublicConfig.findUserByQyWxUserId(userId);
UserByPort userByPort = (UserByPort) portInfo.get("user"); UserByPort userByPort = (UserByPort) portInfo.get("user");
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("approverId", userByPort.getId()); map.put("approverId", userByPort.getId());
@ -2714,7 +2684,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
depositoryRecordMapper.updateApplicationInRecord(map); depositoryRecordMapper.updateApplicationInRecord(map);
} else { } else {
depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(sid.trim())); depositoryRecordMapper.deleteApplicationInRecordById(ObjectFormatUtil.toInteger(sid.trim()));
String mainGidId = (String) redisTemplate.opsForHash().get(spNo, "mainGidId"); String mainGidId = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(spNo, "mainGidId");
String[] replace = mainGidId.replace("[", "").replace("]", "").split(","); String[] replace = mainGidId.replace("[", "").replace("]", "").split(",");
for (String rid : replace for (String rid : replace
) { ) {
@ -2725,7 +2695,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
} }
} }
} }
redisTemplate.delete(spNo); redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_"+spNo);
} }
@ -2892,7 +2862,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 获取当前仓库所属的部门 // 获取当前仓库所属的部门
String adminorg = depositoryById.getAdminorg(); String adminorg = depositoryById.getAdminorg();
List<UserByPort> departmentHeadByUser = PortConfig.findDepartmentHeadByUser(ObjectFormatUtil.toInteger(adminorg),null); List<UserByPort> departmentHeadByUser = PublicConfig.findDepartmentHeadByUser(ObjectFormatUtil.toInteger(adminorg),null);
for (UserByPort departmentHead:departmentHeadByUser for (UserByPort departmentHead:departmentHeadByUser
) { ) {
depositoryManager.append(departmentHead.getId()).append(","); depositoryManager.append(departmentHead.getId()).append(",");
@ -2907,7 +2877,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 获取仓储中心负责人 // 获取仓储中心负责人
List<UserByPort> departmentHeadByUser = PortConfig.findDepartmentHeadByUser(361,userToken); List<UserByPort> departmentHeadByUser = PublicConfig.findDepartmentHeadByUser(361,userToken);
for (UserByPort userByPort : departmentHeadByUser) { for (UserByPort userByPort : departmentHeadByUser) {
depositoryManager.append(userByPort.getId()).append(","); depositoryManager.append(userByPort.getId()).append(",");
@ -2924,21 +2894,18 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 向仓储中心负责人发送新的消息 // 向仓储中心负责人发送新的消息
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override JSONObject jsonObject = qyWxOperationService.sendQyWxToApplicationOutMessage(QyWxUid.toString(), ObjectFormatUtil.toInteger(id), false, userAgent);
public void run() { // 将当前返回结果保存到redis中
JSONObject jsonObject = qyWxOperationService.sendQyWxToApplicationOutMessage(QyWxUid.toString(), ObjectFormatUtil.toInteger(id), false, userAgent); Map<String, Object> QyWxMessageMap = new HashMap<>();
// 将当前返回结果保存到redis中 QyWxMessageMap.put("MsgId", jsonObject.getString("msgid"));
Map<String, Object> QyWxMessageMap = new HashMap<>(); QyWxMessageMap.put("responseCode", jsonObject.getString("response_code"));
QyWxMessageMap.put("MsgId", jsonObject.getString("msgid")); // key user:300450:QyWxOut:1
QyWxMessageMap.put("responseCode", jsonObject.getString("response_code")); // 部门负责人number
// key user:300450:QyWxOut:1 redisPool.getRedisTemplateByDb(15).opsForHash().putAll("user:" + userToken.getNumber() + ":QyWxOutId:" + id, QyWxMessageMap);
// 部门负责人number // 设置过期时间为三天
redisTemplate.opsForHash().putAll("user:" + userToken.getNumber() + ":QyWxOutId:" + id, QyWxMessageMap); redisPool.getRedisTemplateByDb(15).expire("user:" + userToken.getNumber() + ":QyWxOutId:" + id, 72, TimeUnit.HOURS);
// 设置过期时间为三天 });
redisTemplate.expire("user:" + userToken.getNumber() + ":QyWxOutId:" + id, 72, TimeUnit.HOURS);
}
}).start();
} else { } else {
@ -2951,41 +2918,35 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 开启线程更改其他用户卡片模板样式 // 开启线程更改其他用户卡片模板样式
String finalResult = result; String finalResult = result;
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override // 获取responseCode(key为申请人number)
public void run() { //获取申请人信息
// 获取responseCode(key为申请人number) String key = "user:" + applicantUser.getNumber() + ":QyWxOutId:" + id;
//获取申请人信息 String responseCode = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "responseCode");
String key = "user:" + applicantUser.getNumber() + ":QyWxOutId:" + id; qyWxOperationService.updateButtonTemplateCardToUnEnable(responseCode, userToken.getName(), finalResult, userAgent);
String responseCode = (String) redisTemplate.opsForHash().get(key, "responseCode"); });
qyWxOperationService.updateButtonTemplateCardToUnEnable(responseCode, userToken.getName(), finalResult, userAgent);
}
}).start();
// 开启流程通知其他人忽略审批流程 // 开启流程通知其他人忽略审批流程
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override String departmenthead = record.getDepartmenthead();
public void run() { String[] split = departmenthead.split(",");
String departmenthead = record.getDepartmenthead(); StringBuilder QyWxUid = new StringBuilder();
String[] split = departmenthead.split(","); for (int i = 0; i < split.length; i++) {
StringBuilder QyWxUid = new StringBuilder(); String s = split[i];
for (int i = 0; i < split.length; i++) { if ("".equals(s)) {
String s = split[i]; continue;
if ("".equals(s)) {
continue;
}
UserByPort userByPort = LinkInterfaceUtil.FindUserById(ObjectFormatUtil.toInteger(s), null);
String workwechat = userByPort.getWorkwechat();
if (workwechat == null || "".equals(workwechat)) {
workwechat = userByPort.getWechat();
}
// QyWxUid.append(workwechat).append(",");
} }
String s = QyWxUid.toString(); UserByPort userByPort = LinkInterfaceUtil.FindUserById(ObjectFormatUtil.toInteger(s), null);
s = "PangFuZhen,"; String workwechat = userByPort.getWorkwechat();
qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toInteger(id), s, userAgent, 1); if (workwechat == null || "".equals(workwechat)) {
workwechat = userByPort.getWechat();
}
// QyWxUid.append(workwechat).append(",");
} }
}).start(); String s = QyWxUid.toString();
s = "PangFuZhen,";
qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toInteger(id), s, userAgent, 1);
});
} }
else { else {
String result = ""; String result = "";
@ -3078,7 +3039,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 仓库管理员订单信息 // 仓库管理员订单信息
Map<String, Object> userRecord = new HashMap<>(); Map<String, Object> userRecord = new HashMap<>();
// 用户当前子订单 // 用户当前子订单
String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + integer, "minRecord"); String userMinRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + integer, "minRecord");
if (userMinRecord == null) { // 如果当前用户没有子订单 if (userMinRecord == null) { // 如果当前用户没有子订单
userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单 userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单
} else { // 如果当前用户已经有子订单 } else { // 如果当前用户已经有子订单
@ -3087,7 +3048,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
userRecord.put("minRecord", minRecordList.toString()); userRecord.put("minRecord", minRecordList.toString());
} }
// 更新redis中用户记录 // 更新redis中用户记录
redisTemplate.opsForHash().putAll("user:" + integer, userRecord); redisPool.getRedisTemplateByDb(15).opsForHash().putAll("user:" + integer, userRecord);
minRecordManage.append(integer).append(","); minRecordManage.append(integer).append(",");
String workwechat = manager.getWorkwechat(); String workwechat = manager.getWorkwechat();
if (workwechat == null || "".equals(workwechat)) { if (workwechat == null || "".equals(workwechat)) {
@ -3098,14 +3059,11 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
QyWxUid.append("PangFuZhen,"); QyWxUid.append("PangFuZhen,");
minRecord.put("manager", minRecordManage.toString()); minRecord.put("manager", minRecordManage.toString());
// 添加子订单到redis中 // 添加子订单到redis中
redisTemplate.opsForHash().putAll(minRecordKey, minRecord); redisPool.getRedisTemplateByDb(15).opsForHash().putAll(minRecordKey, minRecord);
// 开启线程向仓库管理员发送消息 // 开启线程向仓库管理员发送消息
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
public void run() { });
JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
}
}).start();
} }
else { else {
// 如果是通过仓库 // 如果是通过仓库
@ -3134,7 +3092,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 仓库管理员订单信息 // 仓库管理员订单信息
Map<String, Object> userRecord = new HashMap<>(); Map<String, Object> userRecord = new HashMap<>();
// 用户当前子订单 // 用户当前子订单
String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + integer, "minRecord"); String userMinRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + integer, "minRecord");
if (userMinRecord == null) { // 如果当前用户没有子订单 if (userMinRecord == null) { // 如果当前用户没有子订单
userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单 userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单
} else { // 如果当前用户已经有子订单 } else { // 如果当前用户已经有子订单
@ -3143,7 +3101,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
userRecord.put("minRecord", minRecordList.toString()); userRecord.put("minRecord", minRecordList.toString());
} }
// 更新redis中用户记录 // 更新redis中用户记录
redisTemplate.opsForHash().putAll("user:" + integer, userRecord); redisPool.getRedisTemplateByDb(15).opsForHash().putAll("user:" + integer, userRecord);
minRecordManage.append(integer).append(","); minRecordManage.append(integer).append(",");
String workwechat = manager.getWorkwechat(); String workwechat = manager.getWorkwechat();
if (workwechat == null || "".equals(workwechat)) { if (workwechat == null || "".equals(workwechat)) {
@ -3154,44 +3112,38 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
QyWxUid.append("PangFuZhen,"); QyWxUid.append("PangFuZhen,");
minRecord.put("manager", minRecordManage.toString()); minRecord.put("manager", minRecordManage.toString());
// 添加子订单到redis中 // 添加子订单到redis中
redisTemplate.opsForHash().putAll(minRecordKey, minRecord); redisPool.getRedisTemplateByDb(15).opsForHash().putAll(minRecordKey, minRecord);
// 开启线程向仓库管理员发送消息 // 开启线程向仓库管理员发送消息
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
public void run() { });
JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
}
}).start();
} }
} }
// 开启流程通知其他人忽略审批流程 // 开启流程通知其他人忽略审批流程
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override String depositoryManager = record.getDepositoryManager();
public void run() { String[] split = depositoryManager.split(",");
String depositoryManager = record.getDepositoryManager(); StringBuilder QyWxUid = new StringBuilder();
String[] split = depositoryManager.split(","); for (String s : split) {
StringBuilder QyWxUid = new StringBuilder(); if ("".equals(s)) {
for (String s : split) { continue;
if ("".equals(s)) { }
continue; UserByPort userByPort = LinkInterfaceUtil.FindUserById(ObjectFormatUtil.toInteger(s), null);
} String workwechat = userByPort.getWorkwechat();
UserByPort userByPort = LinkInterfaceUtil.FindUserById(ObjectFormatUtil.toInteger(s), null); if (workwechat == null || "".equals(workwechat)) {
String workwechat = userByPort.getWorkwechat(); workwechat = userByPort.getWechat();
if (workwechat == null || "".equals(workwechat)) {
workwechat = userByPort.getWechat();
}
// QyWxUid.append(workwechat).append(",");
} }
String s = QyWxUid.toString(); // QyWxUid.append(workwechat).append(",");
s = "PangFuZhen,";
qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toInteger(id), s, userAgent, 1);
} }
}).start(); String s = QyWxUid.toString();
s = "PangFuZhen,";
qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toInteger(id), s, userAgent, 1);
});
// 将主订单插入到redis中 // 将主订单插入到redis中
redisTemplate.opsForHash().put("record:" + record.getId(), "minRecord", minRecordByMain.toString()); redisPool.getRedisTemplateByDb(15).opsForHash().put("record:" + record.getId(), "minRecord", minRecordByMain.toString());
map.put("state", "仓储中心负责人审核通过"); map.put("state", "仓储中心负责人审核通过");
if (flagFordepartmentTime || flagForOpenDepository == 2) { if (flagFordepartmentTime || flagForOpenDepository == 2) {
@ -3218,17 +3170,14 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
} }
// 开启线程更改其他用户卡片模板样式 // 开启线程更改其他用户卡片模板样式
String finalResult = result; String finalResult = result;
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override // 获取responseCode(key为申请人number)
public void run() { //获取部门负责人信息
// 获取responseCode(key为申请人number) UserByPort departHead = LinkInterfaceUtil.FindUserById(ObjectFormatUtil.toInteger(record.getDepartmenthead()), userToken);
//获取部门负责人信息 String key = "user:" + departHead.getNumber() + ":QyWxOutId:" + id;
UserByPort departHead = LinkInterfaceUtil.FindUserById(ObjectFormatUtil.toInteger(record.getDepartmenthead()), userToken); String responseCode = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "responseCode");
String key = "user:" + departHead.getNumber() + ":QyWxOutId:" + id; qyWxOperationService.updateButtonTemplateCardToUnEnable(responseCode, userToken.getName(), finalResult, userAgent);
String responseCode = (String) redisTemplate.opsForHash().get(key, "responseCode"); });
qyWxOperationService.updateButtonTemplateCardToUnEnable(responseCode, userToken.getName(), finalResult, userAgent);
}
}).start();
} }
map.put("id", id); map.put("id", id);
return depositoryRecordMapper.updateApplicationOutRecord(map); return depositoryRecordMapper.updateApplicationOutRecord(map);
@ -3357,7 +3306,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 点击用户 // 点击用户
String fromUserName = templateCard.getFromUserName(); String fromUserName = templateCard.getFromUserName();
// 根据userId获取处理人 // 根据userId获取处理人
Map<String, Object> portInfo = PortConfig.findUserByQyWxUserId(fromUserName); Map<String, Object> portInfo = PublicConfig.findUserByQyWxUserId(fromUserName);
UserByPort userByPort = (UserByPort) portInfo.get("user"); UserByPort userByPort = (UserByPort) portInfo.get("user");
// 获取点击的按钮 // 获取点击的按钮
String eventKey = templateCard.getEventKey(); String eventKey = templateCard.getEventKey();
@ -3384,7 +3333,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
map.put("departmentheadPass", 1); map.put("departmentheadPass", 1);
map.put("state", "待仓储中心负责人审核"); map.put("state", "待仓储中心负责人审核");
// 获取仓储中心负责人 // 获取仓储中心负责人
List<UserByPort> departmentHeadByUser = PortConfig.findDepartmentHeadByUser(361,null); List<UserByPort> departmentHeadByUser = PublicConfig.findDepartmentHeadByUser(361,null);
StringBuilder depositoryManager = new StringBuilder(); StringBuilder depositoryManager = new StringBuilder();
StringBuilder QyWxUid = new StringBuilder(); StringBuilder QyWxUid = new StringBuilder();
// for (int i = 0; i < departmentHeadByUser.size(); i++) { // for (int i = 0; i < departmentHeadByUser.size(); i++) {
@ -3404,9 +3353,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
QyWxMessageMap.put("MsgId", jsonObject.getString("msgid")); QyWxMessageMap.put("MsgId", jsonObject.getString("msgid"));
QyWxMessageMap.put("responseCode", jsonObject.getString("response_code")); QyWxMessageMap.put("responseCode", jsonObject.getString("response_code"));
// key user:300450:QyWxOut:1 // key user:300450:QyWxOut:1
redisTemplate.opsForHash().putAll("user:" + userByPort.getNumber() + ":QyWxOutId:" + outId, QyWxMessageMap); redisPool.getRedisTemplateByDb(15).opsForHash().putAll("user:" + userByPort.getNumber() + ":QyWxOutId:" + outId, QyWxMessageMap);
// 设置过期时间为三天 // 设置过期时间为三天
redisTemplate.expire("user:" + userByPort.getNumber() + ":QyWxOutId:" + outId, 72, TimeUnit.HOURS); redisPool.getRedisTemplateByDb(15).expire("user:" + userByPort.getNumber() + ":QyWxOutId:" + outId, 72, TimeUnit.HOURS);
} else { } else {
updateInventoryForOutRefused(recordP); updateInventoryForOutRefused(recordP);
// 如果点击的是驳回 // 如果点击的是驳回
@ -3475,7 +3424,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
// 仓库管理员订单信息 // 仓库管理员订单信息
Map<String, Object> userRecord = new HashMap<>(); Map<String, Object> userRecord = new HashMap<>();
// 用户当前子订单 // 用户当前子订单
String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + userIdByDid.get(j), "minRecord"); String userMinRecord = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get("user:" + userIdByDid.get(j), "minRecord");
if (userMinRecord == null) { // 如果当前用户没有子订单 if (userMinRecord == null) { // 如果当前用户没有子订单
userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单 userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单
} else { // 如果当前用户已经有子订单 } else { // 如果当前用户已经有子订单
@ -3484,7 +3433,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
userRecord.put("minRecord", minRecordList.toString()); userRecord.put("minRecord", minRecordList.toString());
} }
// 更新redis中用户记录 // 更新redis中用户记录
redisTemplate.opsForHash().putAll("user:" + userIdByDid.get(j), userRecord); redisPool.getRedisTemplateByDb(15).opsForHash().putAll("user:" + userIdByDid.get(j), userRecord);
minRecordManage.append(userIdByDid.get(j)).append(","); minRecordManage.append(userIdByDid.get(j)).append(",");
String workwechat = manager.getWorkwechat(); String workwechat = manager.getWorkwechat();
if (workwechat == null || "".equals(workwechat)) { if (workwechat == null || "".equals(workwechat)) {
@ -3495,18 +3444,15 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
QyWxUid.append("PangFuZhen,"); QyWxUid.append("PangFuZhen,");
minRecord.put("manager", minRecordManage.toString()); minRecord.put("manager", minRecordManage.toString());
// 添加子订单到redis中 // 添加子订单到redis中
redisTemplate.opsForHash().putAll(minRecordKey, minRecord); redisPool.getRedisTemplateByDb(15).opsForHash().putAll(minRecordKey, minRecord);
// 开启线程向仓库管理员发送消息 // 开启线程向仓库管理员发送消息
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
public void run() { });
JSONObject jsonObject = qyWxOperationService.sendNotificationToDepositoryManager(QyWxUid.toString(), applicationOutRecordMin.getId(), userAgent);
}
}).start();
} }
// 将主订单插入到redis中 // 将主订单插入到redis中
redisTemplate.opsForHash().put("record:" + recordP.getId(), "minRecord", minRecordByMain.toString()); redisPool.getRedisTemplateByDb(15).opsForHash().put("record:" + recordP.getId(), "minRecord", minRecordByMain.toString());
map.put("state", "仓储中心负责人审核通过"); map.put("state", "仓储中心负责人审核通过");
} else { } else {
// 如果是不通过 // 如果是不通过
@ -4718,15 +4664,12 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
@Override @Override
public Integer deleteApplicationInRecordById(Integer id, UserByPort userToken, String userAgent) { public Integer deleteApplicationInRecordById(Integer id, UserByPort userToken, String userAgent) {
ApplicationInRecord record = depositoryRecordMapper.findApplicationInRecordPById(id); ApplicationInRecord record = depositoryRecordMapper.findApplicationInRecordPById(id);
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override if (Integer.compare(record.getAirapproverPass(), 4) == 0 || Integer.compare(record.getAirapproverPass(), 1) == 0) {
public void run() { // 如果已经入库
if (Integer.compare(record.getAirapproverPass(), 4) == 0 || Integer.compare(record.getAirapproverPass(), 1) == 0) { updateInventoryForErrorInRecord(record.getMid(), record.getQuantity(), record.getAirUnit(), record.getPlaceId(), record.getDepositoryId());
// 如果已经入库
updateInventoryForErrorInRecord(record.getMid(), record.getQuantity(), record.getAirUnit(), record.getPlaceId(), record.getDepositoryId());
}
} }
}).start(); });
return depositoryRecordMapper.deleteApplicationInRecordById(id); return depositoryRecordMapper.deleteApplicationInRecordById(id);
} }
@ -4739,17 +4682,14 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
@Override @Override
public Integer deleteApplicationInRecordByIds(List<Integer> list, UserByPort userToken, String userAgent) { public Integer deleteApplicationInRecordByIds(List<Integer> list, UserByPort userToken, String userAgent) {
List<ApplicationInRecord> applicationInRecordsByIds = depositoryRecordMapper.findApplicationInRecordsByIds(list); List<ApplicationInRecord> applicationInRecordsByIds = depositoryRecordMapper.findApplicationInRecordsByIds(list);
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override for (ApplicationInRecord record : applicationInRecordsByIds
public void run() { ) {
for (ApplicationInRecord record : applicationInRecordsByIds if (Integer.compare(record.getAirapproverPass(), 4) == 0 || Integer.compare(record.getAirapproverPass(), 1) == 0) {
) { updateInventoryForErrorInRecord(record.getMid(), record.getQuantity(), record.getAirUnit(), record.getPlaceId(), record.getDepositoryId());
if (Integer.compare(record.getAirapproverPass(), 4) == 0 || Integer.compare(record.getAirapproverPass(), 1) == 0) {
updateInventoryForErrorInRecord(record.getMid(), record.getQuantity(), record.getAirUnit(), record.getPlaceId(), record.getDepositoryId());
}
} }
} }
}).start(); });
return depositoryRecordMapper.deleteApplicationInRecordByIds(list); return depositoryRecordMapper.deleteApplicationInRecordByIds(list);
} }
@ -5097,19 +5037,19 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
* @return * @return
*/ */
public String createCode(String depositoryName, String key, String type, String mainDeparmentName) { public String createCode(String depositoryName, String key, String type, String mainDeparmentName) {
RLock lock = redissonClient.getLock(key); RLock lock = redissonClient.getLock(PublicConfig.redis_Lock_name);
// 入库单号(公司简称+仓库简称+年月日+数字(位数设置>=9)) // 单号(公司简称+仓库简称+年月日+数字(位数设置>=9))
String code = "GK"; String code = "GK";
String nowTime = DateUtil.getNowTime(); String nowTime = DateUtil.getNowTime();
depositoryName = WordUtil.getPinYinHeadChar(depositoryName); depositoryName = WordUtil.getPinYinHeadChar(depositoryName);
lock.lock(5, TimeUnit.SECONDS); lock.lock(3, TimeUnit.SECONDS);
String orderNumber = redisTemplate.opsForValue().get(key); String orderNumber = redisPool.getRedisTemplateByDb(15).opsForValue().get(key);
if (orderNumber == null) { if (orderNumber == null) {
redisTemplate.opsForValue().set(key, "1", DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); redisPool.getRedisTemplateByDb(15).opsForValue().set(key, "1", DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
orderNumber = "1"; orderNumber = "1";
} }
int newNumber = ObjectFormatUtil.toInteger(orderNumber) + 1; int newNumber = ObjectFormatUtil.toInteger(orderNumber) + 1;
redisTemplate.boundValueOps(key).set(String.valueOf(newNumber), DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); redisPool.getRedisTemplateByDb(15).boundValueOps(key).set(String.valueOf(newNumber), DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
lock.unlock(); lock.unlock();
orderNumber = String.format("%04d", ObjectFormatUtil.toInteger(orderNumber)); orderNumber = String.format("%04d", ObjectFormatUtil.toInteger(orderNumber));
if ("in".equals(type)) { if ("in".equals(type)) {

13
src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryServiceImpl.java

@ -3,8 +3,6 @@ package com.dreamchaser.depository_manage.service.impl;
import cn.hutool.core.lang.Snowflake; import cn.hutool.core.lang.Snowflake;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig;
import com.dreamchaser.depository_manage.config.QyWxConfig;
import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.mapper.*; import com.dreamchaser.depository_manage.mapper.*;
import com.dreamchaser.depository_manage.pojo.InventoryByDname; import com.dreamchaser.depository_manage.pojo.InventoryByDname;
@ -12,7 +10,6 @@ import com.dreamchaser.depository_manage.pojo.InventoryByMTAndDepository;
import com.dreamchaser.depository_manage.pojo.RoleAndDepository; import com.dreamchaser.depository_manage.pojo.RoleAndDepository;
import com.dreamchaser.depository_manage.service.DepositoryService; import com.dreamchaser.depository_manage.service.DepositoryService;
import com.dreamchaser.depository_manage.service.RoleService; import com.dreamchaser.depository_manage.service.RoleService;
import com.dreamchaser.depository_manage.utils.CollectionUtil;
import com.dreamchaser.depository_manage.utils.LinkInterfaceUtil; import com.dreamchaser.depository_manage.utils.LinkInterfaceUtil;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import com.dreamchaser.depository_manage.utils.WordUtil; import com.dreamchaser.depository_manage.utils.WordUtil;
@ -459,7 +456,8 @@ public class DepositoryServiceImpl implements DepositoryService {
// 定义开启线程数目 // 定义开启线程数目
Integer openThreadSize = 0; Integer openThreadSize = 0;
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(threadSize); ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 线程结果集 // 线程结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
@ -872,7 +870,8 @@ public class DepositoryServiceImpl implements DepositoryService {
// 定义开启线程数目 // 定义开启线程数目
Integer openThreadSize = 0; Integer openThreadSize = 0;
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(threadSize); ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 线程结果集 // 线程结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
@ -966,7 +965,9 @@ public class DepositoryServiceImpl implements DepositoryService {
// 定义树结构结果集 // 定义树结构结果集
List<Object> list = new ArrayList<>(); List<Object> list = new ArrayList<>();
// 定义线程池 // 定义线程池
ExecutorService exs = Executors.newFixedThreadPool(depositories.size()); int threadSize = depositories.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 线程结果集 // 线程结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();

16
src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java

@ -1,5 +1,6 @@
package com.dreamchaser.depository_manage.service.impl; package com.dreamchaser.depository_manage.service.impl;
import cn.hutool.core.thread.ThreadFactoryBuilder;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.enums.WriteDirectionEnum; import com.alibaba.excel.enums.WriteDirectionEnum;
@ -115,7 +116,8 @@ public class ExcelServiceImpl implements ExcelService {
// 定义开启线程数目 // 定义开启线程数目
int openThreadSize = 0; int openThreadSize = 0;
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(threadSize); ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 线程结果集 // 线程结果集
List<Future<List<String>>> futureList = new ArrayList<Future<List<String>>>(); List<Future<List<String>>> futureList = new ArrayList<Future<List<String>>>();
@ -228,7 +230,8 @@ public class ExcelServiceImpl implements ExcelService {
// 定义开启线程数目 // 定义开启线程数目
int openThreadSize = 0; int openThreadSize = 0;
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(threadSize); ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 线程结果集 // 线程结果集
List<Future<List<String>>> futureList = new ArrayList<Future<List<String>>>(); List<Future<List<String>>> futureList = new ArrayList<Future<List<String>>>();
@ -345,7 +348,8 @@ public class ExcelServiceImpl implements ExcelService {
// 定义开启线程数目 // 定义开启线程数目
int openThreadSize = 0; int openThreadSize = 0;
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(threadSize); ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 线程结果集 // 线程结果集
List<Future<List<String>>> futureList = new ArrayList<Future<List<String>>>(); List<Future<List<String>>> futureList = new ArrayList<Future<List<String>>>();
@ -708,7 +712,7 @@ public class ExcelServiceImpl implements ExcelService {
} }
} }
ExcelFileInfoPool.removeUserExcelInventoryInfo(number); ExcelFileInfoPool.removeUserExcelInventoryInfo(number);
log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVosForInventory)); log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVosForInventory)+";导入人员"+userByPort.getName()+":"+userByPort.getNumber());
} }
@ -748,7 +752,7 @@ public class ExcelServiceImpl implements ExcelService {
} }
ExcelFileInfoPool.removeUserExcelMaterialTypeInfo(number); ExcelFileInfoPool.removeUserExcelMaterialTypeInfo(number);
log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVosForMaterialType)); log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVosForMaterialType)+";导入人员"+userByPort.getName()+":"+userByPort.getNumber());
} }
@ -792,7 +796,7 @@ public class ExcelServiceImpl implements ExcelService {
} }
} }
ExcelFileInfoPool.removeUserExcelMaterialInfo(number); ExcelFileInfoPool.removeUserExcelMaterialInfo(number);
log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVosForMaterial)); log.info("【批量添加】批量添加数据:{}", JSON.toJSONString(excelVosForMaterial)+";导入人员"+userByPort.getName()+":"+userByPort.getNumber());
} }

128
src/main/java/com/dreamchaser/depository_manage/service/impl/GroupServiceImpl.java

@ -1,10 +1,13 @@
package com.dreamchaser.depository_manage.service.impl; package com.dreamchaser.depository_manage.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.mapper.*; import com.dreamchaser.depository_manage.mapper.*;
import com.dreamchaser.depository_manage.pojo.*; import com.dreamchaser.depository_manage.pojo.*;
import com.dreamchaser.depository_manage.security.pool.RedisPool;
import com.dreamchaser.depository_manage.security.pool.SendQyWxMessageThreadPool;
import com.dreamchaser.depository_manage.service.DepositoryRecordService; import com.dreamchaser.depository_manage.service.DepositoryRecordService;
import com.dreamchaser.depository_manage.service.GroupService; import com.dreamchaser.depository_manage.service.GroupService;
import com.dreamchaser.depository_manage.service.SplitUnitService; import com.dreamchaser.depository_manage.service.SplitUnitService;
@ -42,7 +45,7 @@ public class GroupServiceImpl implements GroupService {
@Autowired @Autowired
RedissonClient redissonClient; RedissonClient redissonClient;
@Autowired @Autowired
RedisTemplate<String, String> redisTemplate; RedisPool redisPool;
@Autowired @Autowired
SplitUnitMapper splitUnitMapper; SplitUnitMapper splitUnitMapper;
@ -520,7 +523,7 @@ public class GroupServiceImpl implements GroupService {
return list; return list;
} }
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(threadSize); ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 线程结果集 // 线程结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
@ -781,67 +784,64 @@ public class GroupServiceImpl implements GroupService {
// 开启一个线程用于发送审批 // 开启一个线程用于发送审批
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override Map<Long, List<Integer>> mtIdToRecordId = new HashMap<>();
public void run() { for (int i = 0; i < recordIds.size(); i++) {
Map<Long, List<Integer>> mtIdToRecordId = new HashMap<>(); Integer recordId = recordIds.get(i);
for (int i = 0; i < recordIds.size(); i++) { if (recordId != null) {
Integer recordId = recordIds.get(i); // 如果当前id不是空 获取对应的入库仓库id
if (recordId != null) { Long mtId = mtIdList.get(i);
// 如果当前id不是空 获取对应的入库仓库id // 将对应仓库与订单id添加映射关系
Long mtId = mtIdList.get(i); List<Integer> integers = mtIdToRecordId.get(mtId);
// 将对应仓库与订单id添加映射关系 if (integers != null) {
List<Integer> integers = mtIdToRecordId.get(mtId); // 如果有对应关系
if (integers != null) { integers.add(recordId);
// 如果有对应关系 } else {
integers.add(recordId); // 如果没有
} else { integers = new ArrayList<>();
// 如果没有 integers.add(recordId);
integers = new ArrayList<>(); mtIdToRecordId.put(mtId, integers);
integers.add(recordId);
mtIdToRecordId.put(mtId, integers);
}
} }
} }
// 获取遍历器 }
Iterator<Long> iterator = mtIdToRecordId.keySet().iterator(); // 获取遍历器
if (iterator.hasNext()) { Iterator<Long> iterator = mtIdToRecordId.keySet().iterator();
// 获取当前仓库 if (iterator.hasNext()) {
Long next = iterator.next(); // 获取当前仓库
// 获取入库到当前仓库的订单id Long next = iterator.next();
List<Integer> integerList = mtIdToRecordId.get(next); // 获取入库到当前仓库的订单id
List<Integer> integerList = mtIdToRecordId.get(next);
// 获取当前类型的管理员
Map<String, Object> paramForMtManagers = new HashMap<>(); // 获取当前类型的管理员
paramForMtManagers.put("mtid",next); Map<String, Object> paramForMtManagers = new HashMap<>();
List<RoleAndMaterialType> materialTypeIdForIn = roleMapper.findRoleAndMaterialTypeByCondition(paramForMtManagers); paramForMtManagers.put("mtid",next);
// 用于存储当前仓库的管理员企业微信userId List<RoleAndMaterialType> materialTypeIdForIn = roleMapper.findRoleAndMaterialTypeByCondition(paramForMtManagers);
StringBuilder sb = new StringBuilder(); // 用于存储当前仓库的管理员企业微信userId
for (RoleAndMaterialType mt : materialTypeIdForIn StringBuilder sb = new StringBuilder();
) { for (RoleAndMaterialType mt : materialTypeIdForIn
// 获取管理员数据 ) {
UserByPort userByPort = LinkInterfaceUtil.FindUserById(mt.getUid(), userToken); // 获取管理员数据
String workwechat = userByPort.getWorkwechat(); UserByPort userByPort = LinkInterfaceUtil.FindUserById(mt.getUid(), userToken);
if (workwechat == null || "".equals(workwechat)) { String workwechat = userByPort.getWorkwechat();
workwechat = userByPort.getWechat(); if (workwechat == null || "".equals(workwechat)) {
} workwechat = userByPort.getWechat();
sb.append(workwechat).append(",");
} }
JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(userAgent, userToken, integerList, sb.toString()); sb.append(workwechat).append(",");
String sp_no = jsonObject.getString("sp_no");
Map<String, Object> QyWxApprovalMap = new HashMap<>();
QyWxApprovalMap.put("sp_no", sp_no);
QyWxApprovalMap.put("mainId", integerList.toString());
QyWxApprovalMap.put("mainGidId", showRecordIds.toString());
redisTemplate.opsForHash().putAll(sp_no, QyWxApprovalMap);
// 设置过期为7天
redisTemplate.expire(sp_no, 7, TimeUnit.DAYS);
} }
JSONObject jsonObject = qyWxOperationService.sendApprovalTemplateIn(userAgent, userToken, integerList, sb.toString());
String sp_no = jsonObject.getString("sp_no");
Map<String, Object> QyWxApprovalMap = new HashMap<>();
QyWxApprovalMap.put("sp_no", sp_no);
QyWxApprovalMap.put("mainId", integerList.toString());
QyWxApprovalMap.put("mainGidId", showRecordIds.toString());
redisPool.getRedisTemplateByDb(14).opsForHash().putAll("wms_QyWxMessage_"+sp_no, QyWxApprovalMap);
// 设置过期为7天
redisPool.getRedisTemplateByDb(14).expire("wms_QyWxMessage_"+sp_no, 7, TimeUnit.DAYS);
} }
}).start();
});
return result; return result;
} }
@ -1224,18 +1224,18 @@ public class GroupServiceImpl implements GroupService {
* @return * @return
*/ */
private String createOutCode(String key, String mainDeparmentName) { private String createOutCode(String key, String mainDeparmentName) {
RLock lock = redissonClient.getLock(key); RLock lock = redissonClient.getLock(PublicConfig.redis_Lock_name);
// 入库单号(公司简称+仓库简称+年月日+数字(位数设置>=9)) // 入库单号(公司简称+仓库简称+年月日+数字(位数设置>=9))
String code = "GK"; String code = "GK";
String nowTime = DateUtil.getNowTime(); String nowTime = DateUtil.getNowTime();
lock.lock(5, TimeUnit.SECONDS); lock.lock(3, TimeUnit.SECONDS);
String orderNumber = redisTemplate.opsForValue().get(key); String orderNumber = redisPool.getRedisTemplateByDb(15).opsForValue().get(key);
if (orderNumber == null) { if (orderNumber == null) {
redisTemplate.opsForValue().set(key, "1", DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); redisPool.getRedisTemplateByDb(15).opsForValue().set(key, "1", DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
orderNumber = "1"; orderNumber = "1";
} }
int newNumber = ObjectFormatUtil.toInteger(orderNumber) + 1; int newNumber = ObjectFormatUtil.toInteger(orderNumber) + 1;
redisTemplate.boundValueOps(key).set(String.valueOf(newNumber), DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); redisPool.getRedisTemplateByDb(15).boundValueOps(key).set(String.valueOf(newNumber), DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
lock.unlock(); lock.unlock();
orderNumber = String.format("%09d", ObjectFormatUtil.toInteger(orderNumber)); orderNumber = String.format("%09d", ObjectFormatUtil.toInteger(orderNumber));
mainDeparmentName = WordUtil.getPinYinHeadChar(mainDeparmentName); mainDeparmentName = WordUtil.getPinYinHeadChar(mainDeparmentName);
@ -1264,7 +1264,9 @@ public class GroupServiceImpl implements GroupService {
List<Group> groupByGids = groupMapper.findGroupByGids(groupIdList); List<Group> groupByGids = groupMapper.findGroupByGids(groupIdList);
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(groupByGids.size()); int threadSize = groupByGids.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 线程结果集 // 线程结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();

69
src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java

@ -9,6 +9,7 @@ import com.dreamchaser.depository_manage.pojo.InventoryP;
import com.dreamchaser.depository_manage.pojo.MaterialAndPlaceForViewP; import com.dreamchaser.depository_manage.pojo.MaterialAndPlaceForViewP;
import com.dreamchaser.depository_manage.pojo.MaterialP; import com.dreamchaser.depository_manage.pojo.MaterialP;
import com.dreamchaser.depository_manage.pojo.PlaceP; import com.dreamchaser.depository_manage.pojo.PlaceP;
import com.dreamchaser.depository_manage.security.pool.RedisPool;
import com.dreamchaser.depository_manage.service.*; import com.dreamchaser.depository_manage.service.*;
import com.dreamchaser.depository_manage.utils.DateUtil; import com.dreamchaser.depository_manage.utils.DateUtil;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
@ -42,7 +43,7 @@ public class MaterialServiceImpl implements MaterialService {
QrCodeMapper qrCodeMapper; QrCodeMapper qrCodeMapper;
@Autowired @Autowired
RedisTemplate<String, String> redisTemplate; RedisPool redisPool;
@Autowired @Autowired
SplitUnitMapper splitUnitMapper; SplitUnitMapper splitUnitMapper;
@ -1312,7 +1313,7 @@ public class MaterialServiceImpl implements MaterialService {
parentMt = materialTypeMapper.findMaterialTypeByOldId(parentMt.getParentId()); parentMt = materialTypeMapper.findMaterialTypeByOldId(parentMt.getParentId());
} }
List<String> objectList = redisTemplate.opsForList().range("wms_materialTree_result", 0, -1); List<String> objectList = redisPool.getRedisTemplateByDb(15).opsForList().range("wms_materialTree_result", 0, -1);
for (int i = 0; i < objectList.size(); i++) { for (int i = 0; i < objectList.size(); i++) {
String s = objectList.get(i); String s = objectList.get(i);
@ -1323,7 +1324,7 @@ public class MaterialServiceImpl implements MaterialService {
if (mtLevel == 1) { if (mtLevel == 1) {
jsonObject.remove("spread"); jsonObject.remove("spread");
stringObjectMap.remove("spread"); stringObjectMap.remove("spread");
redisTemplate.opsForList().set("wms_materialTree_result", i, JSONObject.toJSONString(jsonObject)); redisPool.getRedisTemplateByDb(15).opsForList().set("wms_materialTree_result", i, JSONObject.toJSONString(jsonObject));
jsonObject.put("spread", true); jsonObject.put("spread", true);
stringObjectMap.put("spread", true); stringObjectMap.put("spread", true);
result.add(stringObjectMap); result.add(stringObjectMap);
@ -1334,19 +1335,19 @@ public class MaterialServiceImpl implements MaterialService {
jsonObject.put("children", objectList1); jsonObject.put("children", objectList1);
jsonObject.remove("spread"); jsonObject.remove("spread");
stringObjectMap.remove("spread"); stringObjectMap.remove("spread");
redisTemplate.opsForList().set("wms_materialTree_result", i, JSONObject.toJSONString(jsonObject)); redisPool.getRedisTemplateByDb(15).opsForList().set("wms_materialTree_result", i, JSONObject.toJSONString(jsonObject));
jsonObject.put("spread", true); jsonObject.put("spread", true);
stringObjectMap.put("spread", true); stringObjectMap.put("spread", true);
result.add(jsonObject); result.add(jsonObject);
} }
} else { } else {
redisTemplate.opsForList().set("wms_materialTree_result", i, JSONObject.toJSONString(jsonObject)); redisPool.getRedisTemplateByDb(15).opsForList().set("wms_materialTree_result", i, JSONObject.toJSONString(jsonObject));
result.add(jsonObject); result.add(jsonObject);
} }
} }
return result; return result;
} else { } else {
List<String> objectList = redisTemplate.opsForList().range("wms_materialTree_result", 0, -1); List<String> objectList = redisPool.getRedisTemplateByDb(15).opsForList().range("wms_materialTree_result", 0, -1);
try { try {
Thread.sleep(10); Thread.sleep(10);
} catch (InterruptedException e) { } catch (InterruptedException e) {
@ -1484,7 +1485,7 @@ public class MaterialServiceImpl implements MaterialService {
if (materialTypeByParent.size() > 0) { if (materialTypeByParent.size() > 0) {
// 获取当前redis中的树 // 获取当前redis中的树
List<String> objectList = redisTemplate.opsForList().range("wms_materialTree_result", 0, -1); List<String> objectList = redisPool.getRedisTemplateByDb(15).opsForList().range("wms_materialTree_result", 0, -1);
// 获取当前最高级 // 获取当前最高级
MaterialType parentMt = mt; MaterialType parentMt = mt;
@ -1499,7 +1500,7 @@ public class MaterialServiceImpl implements MaterialService {
// 如果是打开的顶级 // 如果是打开的顶级
JSONArray children = closeTree(jsonObject.getJSONArray("children"), mtLevel - 1, mt); JSONArray children = closeTree(jsonObject.getJSONArray("children"), mtLevel - 1, mt);
jsonObject.put("children", children); jsonObject.put("children", children);
redisTemplate.opsForList().set("wms_materialTree_result", i, JSONObject.toJSONString(jsonObject)); redisPool.getRedisTemplateByDb(15).opsForList().set("wms_materialTree_result", i, JSONObject.toJSONString(jsonObject));
break; break;
} }
} }
@ -1958,7 +1959,9 @@ public class MaterialServiceImpl implements MaterialService {
// 获取所有顶级类别 // 获取所有顶级类别
List<MaterialType> materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent(); List<MaterialType> materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent();
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(materialTypeNoParent.size()); int threadSize = materialTypeNoParent.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Object> list = new ArrayList<>(); List<Object> list = new ArrayList<>();
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
@ -1999,7 +2002,9 @@ public class MaterialServiceImpl implements MaterialService {
List<MaterialType> materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent(); List<MaterialType> materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent();
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(materialTypeNoParent.size()); int threadSize = materialTypeNoParent.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Object> list = new ArrayList<>(); List<Object> list = new ArrayList<>();
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
@ -2036,7 +2041,9 @@ public class MaterialServiceImpl implements MaterialService {
public List<Object> InitTreeMenus(String mname) { public List<Object> InitTreeMenus(String mname) {
List<MaterialType> materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent(); List<MaterialType> materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent();
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(materialTypeNoParent.size()); int threadSize = materialTypeNoParent.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Object> list = new ArrayList<>(); List<Object> list = new ArrayList<>();
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
@ -2377,7 +2384,7 @@ public class MaterialServiceImpl implements MaterialService {
public List<Object> InitTreeMenus_Test() { public List<Object> InitTreeMenus_Test() {
List<Object> list = new ArrayList<>(); List<Object> list = new ArrayList<>();
List<String> wms_materialTree_result = redisTemplate.opsForList().range("wms_materialTree_result", 0, -1); List<String> wms_materialTree_result = redisPool.getRedisTemplateByDb(15).opsForList().range("wms_materialTree_result", 0, -1);
if (wms_materialTree_result != null && wms_materialTree_result.size() != 0) { if (wms_materialTree_result != null && wms_materialTree_result.size() != 0) {
try { try {
Thread.sleep(100); Thread.sleep(100);
@ -2394,7 +2401,9 @@ public class MaterialServiceImpl implements MaterialService {
List<MaterialType> materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent(); List<MaterialType> materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent();
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(materialTypeNoParent.size()); int threadSize = materialTypeNoParent.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
@ -2417,8 +2426,8 @@ public class MaterialServiceImpl implements MaterialService {
e.printStackTrace(); e.printStackTrace();
} }
list.add(result); list.add(result);
redisTemplate.opsForList().rightPush("wms_materialTree_result", JSON.toJSONString(result)); redisPool.getRedisTemplateByDb(15).opsForList().rightPush("wms_materialTree_result", JSON.toJSONString(result));
redisTemplate.expire("wms_materialTree_result", DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); redisPool.getRedisTemplateByDb(15).expire("wms_materialTree_result", DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
} }
return list; return list;
} }
@ -2431,12 +2440,15 @@ public class MaterialServiceImpl implements MaterialService {
public void RefreshInitTreeMenus() { public void RefreshInitTreeMenus() {
// 删除当前存储的树 // 删除当前存储的树
redisTemplate.delete("wms_materialTree_result"); redisPool.getRedisTemplateByDb(15).delete("wms_materialTree_result");
List<MaterialType> materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent(); List<MaterialType> materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent();
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(materialTypeNoParent.size());
int threadSize = materialTypeNoParent.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
@ -2458,8 +2470,8 @@ public class MaterialServiceImpl implements MaterialService {
} catch (InterruptedException | ExecutionException e) { } catch (InterruptedException | ExecutionException e) {
e.printStackTrace(); e.printStackTrace();
} }
redisTemplate.opsForList().rightPush("wms_materialTree_result", JSON.toJSONString(result)); redisPool.getRedisTemplateByDb(15).opsForList().rightPush("wms_materialTree_result", JSON.toJSONString(result));
redisTemplate.expire("wms_materialTree_result", DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); redisPool.getRedisTemplateByDb(15).expire("wms_materialTree_result", DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
} }
} }
@ -2570,7 +2582,8 @@ public class MaterialServiceImpl implements MaterialService {
int threadSize = (int) (Math.ceil(totalVal / size)); int threadSize = (int) (Math.ceil(totalVal / size));
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(threadSize); ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 树结构结果集 // 树结构结果集
List<Object> list = new ArrayList<>(); List<Object> list = new ArrayList<>();
// 线程结果集 // 线程结果集
@ -2752,13 +2765,13 @@ public class MaterialServiceImpl implements MaterialService {
// 定义存储在redis中的hash的key // 定义存储在redis中的hash的key
String key = "wms_stockTaking_" + map.get("userTokenId") + "_" + DateUtil.getNowTime() + "_" + mpv.getId(); String key = "wms_stockTaking_" + map.get("userTokenId") + "_" + DateUtil.getNowTime() + "_" + mpv.getId();
// 获取用于展示的盘点结果 // 获取用于展示的盘点结果
String takingResultString = (String) redisTemplate.opsForHash().get(key, "takingResultString"); String takingResultString = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "takingResultString");
// 获取盘点结果 // 获取盘点结果
String takingResult = (String) redisTemplate.opsForHash().get(key, "takingResult"); String takingResult = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "takingResult");
// 获取盈亏数量 // 获取盈亏数量
String number = (String) redisTemplate.opsForHash().get(key, "number"); String number = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "number");
// 获取盘点时的计量单位 // 获取盘点时的计量单位
String unit = (String) redisTemplate.opsForHash().get(key, "unit"); String unit = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "unit");
// 设置盘点单位 // 设置盘点单位
mpv.setTakingUnit(unit); mpv.setTakingUnit(unit);
// 设置盈亏数量 // 设置盈亏数量
@ -2973,7 +2986,9 @@ public class MaterialServiceImpl implements MaterialService {
List<MaterialType> materialTypeByOldIds = materialTypeMapper.findMaterialTypeByOldIds(materialTypeIdList); List<MaterialType> materialTypeByOldIds = materialTypeMapper.findMaterialTypeByOldIds(materialTypeIdList);
// 定义线程集 // 定义线程集
ExecutorService exs = Executors.newFixedThreadPool(materialTypeByOldIds.size()); int threadSize = materialTypeByOldIds.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 定义线程结果集 // 定义线程结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
@ -3099,7 +3114,9 @@ public class MaterialServiceImpl implements MaterialService {
List<MaterialType> materialTypeByOldIds = materialTypeMapper.findMaterialTypeByOldIds(materialTypeIdList); List<MaterialType> materialTypeByOldIds = materialTypeMapper.findMaterialTypeByOldIds(materialTypeIdList);
// 定义线程集 // 定义线程集
ExecutorService exs = Executors.newFixedThreadPool(materialTypeByOldIds.size()); int threadSize = materialTypeByOldIds.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 定义线程结果集 // 定义线程结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();

3
src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialTypeServiceImpl.java

@ -248,7 +248,8 @@ public class MaterialTypeServiceImpl implements MaterialTypeService {
// 定义开启线程数 // 定义开启线程数
int openThreadSize = 0; int openThreadSize = 0;
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(threadSize); ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 树结构结果集 // 树结构结果集
List<Object> list = new ArrayList<>(); List<Object> list = new ArrayList<>();
// 线程结果集 // 线程结果集

5
src/main/java/com/dreamchaser/depository_manage/service/impl/NoticeServiceImpl.java

@ -1,7 +1,7 @@
package com.dreamchaser.depository_manage.service.impl; package com.dreamchaser.depository_manage.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.config.QyWxConfig; import com.dreamchaser.depository_manage.config.QyWxConfig;
import com.dreamchaser.depository_manage.entity.Notice; import com.dreamchaser.depository_manage.entity.Notice;
import com.dreamchaser.depository_manage.entity.UserByPort; import com.dreamchaser.depository_manage.entity.UserByPort;
@ -15,7 +15,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
/** /**
@ -94,7 +93,7 @@ public class NoticeServiceImpl implements NoticeService {
String userAgent = (String) map.get("userAgent"); String userAgent = (String) map.get("userAgent");
// 获取当前用户的部门在企业微信中的对应id // 获取当前用户的部门在企业微信中的对应id
JSONObject userPortByQyWx = PortConfig.getUserPortByQyWx(userByPort.getMaindeparment()); JSONObject userPortByQyWx = PublicConfig.getUserPortByQyWx(userByPort.getMaindeparment());
Integer portByQyWxInteger = userPortByQyWx.getInteger("wechatorganizationid"); Integer portByQyWxInteger = userPortByQyWx.getInteger("wechatorganizationid");
for (Notice value : notice) { for (Notice value : notice) {
UserByPort user = LinkInterfaceUtil.FindUserById(value.getUserId(), null); UserByPort user = LinkInterfaceUtil.FindUserById(value.getUserId(), null);

23
src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java

@ -3,23 +3,18 @@ package com.dreamchaser.depository_manage.service.impl;
import cn.hutool.core.lang.Snowflake; import cn.hutool.core.lang.Snowflake;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.config.QyWxConfig; import com.dreamchaser.depository_manage.config.QyWxConfig;
import com.dreamchaser.depository_manage.config.QyWx_approval_template.*; import com.dreamchaser.depository_manage.config.QyWx_approval_template.*;
import com.dreamchaser.depository_manage.config.QyWx_template_card.*; import com.dreamchaser.depository_manage.config.QyWx_template_card.*;
import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.mapper.*; import com.dreamchaser.depository_manage.mapper.*;
import com.dreamchaser.depository_manage.pojo.ApplicationInRecordP;
import com.dreamchaser.depository_manage.pojo.ApplicationOutRecordP;
import com.dreamchaser.depository_manage.pojo.MaterialP;
import com.dreamchaser.depository_manage.pojo.StockTakingChildP;
import com.dreamchaser.depository_manage.utils.DateUtil; import com.dreamchaser.depository_manage.utils.DateUtil;
import com.dreamchaser.depository_manage.utils.HttpUtils; import com.dreamchaser.depository_manage.utils.HttpUtils;
import com.dreamchaser.depository_manage.utils.LinkInterfaceUtil; import com.dreamchaser.depository_manage.utils.LinkInterfaceUtil;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
@ -37,10 +32,6 @@ public class QyWxOperationService {
@Autowired @Autowired
DepositoryMapper depositoryMapper; DepositoryMapper depositoryMapper;
@Autowired
RedisTemplate<String, String> redisTemplate;
@Autowired @Autowired
StockTakingMapper stockTakingMapper; StockTakingMapper stockTakingMapper;
@ -1437,7 +1428,7 @@ public class QyWxOperationService {
List<String> userIdList = new ArrayList<>(); List<String> userIdList = new ArrayList<>();
List<UserByPort> departmentHeadForUserToken = PortConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userToken); List<UserByPort> departmentHeadForUserToken = PublicConfig.findDepartmentHeadByUser(userToken.getMaindeparment(), userToken);
for (UserByPort departmentHead : departmentHeadForUserToken for (UserByPort departmentHead : departmentHeadForUserToken
) { ) {
String departmentHeadWorkwechat = departmentHead.getWorkwechat(); String departmentHeadWorkwechat = departmentHead.getWorkwechat();
@ -1448,7 +1439,7 @@ public class QyWxOperationService {
} }
// 获取当前登录用户部门与企业微信部门对照 // 获取当前登录用户部门与企业微信部门对照
JSONObject userPortByQyWx = PortConfig.getUserPortByQyWx(userToken.getMaindeparment()); JSONObject userPortByQyWx = PublicConfig.getUserPortByQyWx(userToken.getMaindeparment());
String portName = userPortByQyWx.getString("name"); String portName = userPortByQyWx.getString("name");
Integer portByQyWxInteger = userPortByQyWx.getInteger("wechatorganizationid"); Integer portByQyWxInteger = userPortByQyWx.getInteger("wechatorganizationid");
@ -1779,7 +1770,7 @@ public class QyWxOperationService {
// 获取当前仓库所属的部门 // 获取当前仓库所属的部门
String adminorg = depositoryById.getAdminorg(); String adminorg = depositoryById.getAdminorg();
List<UserByPort> departmentHeadByUser = PortConfig.findDepartmentHeadByUser(ObjectFormatUtil.toInteger(adminorg), userToken); List<UserByPort> departmentHeadByUser = PublicConfig.findDepartmentHeadByUser(ObjectFormatUtil.toInteger(adminorg), userToken);
for (UserByPort departmentHead : departmentHeadByUser for (UserByPort departmentHead : departmentHeadByUser
) { ) {
String departmentHeadWorkwechat = departmentHead.getWorkwechat(); String departmentHeadWorkwechat = departmentHead.getWorkwechat();
@ -1946,7 +1937,7 @@ public class QyWxOperationService {
approval_template_apply_data_contents_department.setId("Contact-1668152104847"); approval_template_apply_data_contents_department.setId("Contact-1668152104847");
// 获取当前登录用户部门与企业微信部门对照 // 获取当前登录用户部门与企业微信部门对照
JSONObject userPortByQyWx = PortConfig.getUserPortByQyWx(userByPort.getMaindeparment()); JSONObject userPortByQyWx = PublicConfig.getUserPortByQyWx(userByPort.getMaindeparment());
String portName = userPortByQyWx.getString("name"); String portName = userPortByQyWx.getString("name");
Integer portByQyWxInteger = userPortByQyWx.getInteger("wechatorganizationid"); Integer portByQyWxInteger = userPortByQyWx.getInteger("wechatorganizationid");
@ -2275,7 +2266,7 @@ public class QyWxOperationService {
approval_template_apply_data_contents_department.setId("Contact-1668152665831"); approval_template_apply_data_contents_department.setId("Contact-1668152665831");
// 获取当前登录用户部门与企业微信部门对照 // 获取当前登录用户部门与企业微信部门对照
JSONObject userPortByQyWx = PortConfig.getUserPortByQyWx(userToken.getMaindeparment()); JSONObject userPortByQyWx = PublicConfig.getUserPortByQyWx(userToken.getMaindeparment());
String portName = userPortByQyWx.getString("name"); String portName = userPortByQyWx.getString("name");
Integer portByQyWxInteger = userPortByQyWx.getInteger("wechatorganizationid"); Integer portByQyWxInteger = userPortByQyWx.getInteger("wechatorganizationid");
@ -2324,7 +2315,7 @@ public class QyWxOperationService {
continue; continue;
} }
// 获取负责人信息 // 获取负责人信息
UserByPort userByPort = PortConfig.findUserByPortByNumber(manager); UserByPort userByPort = PublicConfig.findUserByPortByNumber(manager);
Map<String, String> contact_principal = new HashMap<>(); Map<String, String> contact_principal = new HashMap<>();
String workwechat1 = userByPort.getWorkwechat(); String workwechat1 = userByPort.getWorkwechat();
if (workwechat1 == null || "".equals(workwechat1)) { if (workwechat1 == null || "".equals(workwechat1)) {

220
src/main/java/com/dreamchaser/depository_manage/service/impl/RedisServiceImpl.java

@ -1,220 +0,0 @@
package com.dreamchaser.depository_manage.service.impl;
import com.alibaba.excel.util.StringUtils;
import com.dreamchaser.depository_manage.service.RedisService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.TimeUnit;
/**
* 操作redis
* @author shy
* @date 2020/12/10 10:01
*/
@Service
public class RedisServiceImpl implements RedisService {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate<String,String> redisTemplate;
/**
* 判断String类型key是否存在
*
* @param key
* @return
* @author shy
* @date 2018年11月13日 下午1:40:37
*/
public boolean hasStringKey(String key) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
return stringRedisTemplate.opsForValue().getOperations().hasKey(key);
}
/**
* 判断String类型key是否存在
*
* @param key
* @return
* @author shy
* @date 2018年11月13日 下午1:43:51
*/
public boolean nonStringKey(String key) {
return !hasStringKey(key);
}
/**
* 设置String类型keyString类型value过期时间timeoutTimeUnit
*
* @param key
* @param value
* @param timeout
* @param timeUnit
* @author shy
* @date 2018年12月10日13:53:38
*/
public void setStringKey(String key, String value, Long timeout, TimeUnit timeUnit) {
if (StringUtils.isBlank(key) || Objects.isNull(timeout)) {
throw new RuntimeException();
}
stringRedisTemplate.opsForValue().set(key, value, timeout, timeUnit);
}
public void setStringKey(String key, String value) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
stringRedisTemplate.opsForValue().set(key, value);
}
/**
* 获取String类型value
*
* @param key
* @return
* @author shy
* @date 2018年11月12日 下午7:09:31
*/
public String getStringValue(String key) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
return stringRedisTemplate.opsForValue().get(key);
}
/**
* 获取Key的过期时间
*
* @param key
* @return
* @author shy
* @date 2019年4月25日17:28:36
*/
public Long getExpire(String key) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
return stringRedisTemplate.getExpire(key);
}
/**
* 设置Key的过期时间
*
* @param key
* @return
* @author shy
* @date 2019年4月25日17:28:36
*/
public Boolean setExpire(String key,Long timeout, TimeUnit timeUnit) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
return stringRedisTemplate.expire(key, timeout, timeUnit);
}
/**
* value自增+n
* @param key
* @return
* @author shy
* @date 2019年4月8日15:54:30
*/
public Long setIncrementValue(String key) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
return stringRedisTemplate.opsForValue().increment(key, 1L);
}
/**
* 设置String类型keyObject类型value过期时间timeout
*
* @param key
* @param value
* @param timeout
* @author shy
* @date 2018年12月10日13:54:07
*/
public void setObjectKey(String key, String value, Long timeout,TimeUnit time) {
if (StringUtils.isBlank(key) || Objects.isNull(timeout)) {
throw new RuntimeException();
}
redisTemplate.opsForValue().set(key, value, timeout, time);
}
public void setObjectKey(String key, String value) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
redisTemplate.opsForValue().set(key, value);
}
/**
* 获取Object类型value
*
* @param key
* @param clazz
* @return
* @author shy
* @date 2019年11月6日10:01:30
*/
@SuppressWarnings("unchecked")
public <T> T getObjectValue(String key, Class<T> clazz) {
if (StringUtils.isBlank(key)) {
return null;
}
return (T) redisTemplate.opsForValue().get(key);
}
/**
* 移除单个String类型key
*
* @param key
* @author shy
* @date 2018年11月13日 上午10:42:01
*/
public void removeSingleStringKey(String key) {
if (StringUtils.isBlank(key)) {
throw new RuntimeException();
}
stringRedisTemplate.opsForValue().getOperations().delete(key);
}
/**
* 移除Collection<String>类型keys
*
* @param keys
* @author shy
* @date 2018年11月13日 下午3:15:16
*/
public void removeMultiStringKey(Collection<String> keys) {
if (CollectionUtils.isNotEmpty(keys)) {
stringRedisTemplate.opsForValue().getOperations().delete(keys);
}
}
/**
* redis key 模糊查询
* @author shy
* @date 2021年1月4日 上午11:21:45
* @param key
* @return
*/
public Set<String> queryStringKeys(String key) {
return redisTemplate.keys(key + "*");
}
}

305
src/main/java/com/dreamchaser/depository_manage/service/impl/StockTakingServiceImpl.java

@ -1,7 +1,7 @@
package com.dreamchaser.depository_manage.service.impl; package com.dreamchaser.depository_manage.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.mapper.*; import com.dreamchaser.depository_manage.mapper.*;
@ -9,7 +9,8 @@ import com.dreamchaser.depository_manage.pojo.*;
import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details; import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details;
import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details_Approver; import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details_Approver;
import com.dreamchaser.depository_manage.pojo.callBackXml.callBackXml_button_templatecard.TemplateCard; import com.dreamchaser.depository_manage.pojo.callBackXml.callBackXml_button_templatecard.TemplateCard;
import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; import com.dreamchaser.depository_manage.security.pool.RedisPool;
import com.dreamchaser.depository_manage.security.pool.SendQyWxMessageThreadPool;
import com.dreamchaser.depository_manage.service.DepositoryRecordService; import com.dreamchaser.depository_manage.service.DepositoryRecordService;
import com.dreamchaser.depository_manage.service.SplitUnitService; import com.dreamchaser.depository_manage.service.SplitUnitService;
import com.dreamchaser.depository_manage.service.StockTakingService; import com.dreamchaser.depository_manage.service.StockTakingService;
@ -24,7 +25,6 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -45,7 +45,7 @@ public class StockTakingServiceImpl implements StockTakingService {
RedissonClient redissonClient; RedissonClient redissonClient;
@Autowired @Autowired
RedisTemplate<String, String> redisTemplate; private RedisPool redisPool;
@Autowired @Autowired
MaterialMapper materialMapper; MaterialMapper materialMapper;
@ -151,11 +151,11 @@ public class StockTakingServiceImpl implements StockTakingService {
// 定义用于存储仓库与当前对应关系的map // 定义用于存储仓库与当前对应关系的map
Map<String, List<MaterialAndPlaceForViewP>> paramForDepositoryAndPid = new HashMap<>(); Map<String, List<MaterialAndPlaceForViewP>> paramForDepositoryAndPid = new HashMap<>();
for (String key : keys) { for (String key : keys) {
Boolean flagForSubmit = ObjectFormatUtil.toBoolean(redisTemplate.opsForHash().get(key, "flagForSubmit")); Boolean flagForSubmit = ObjectFormatUtil.toBoolean(redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "flagForSubmit"));
if (flagForSubmit != null && !flagForSubmit) { if (flagForSubmit != null && !flagForSubmit) {
// 获取盘点时的物料与库位的对应关系id // 获取盘点时的物料与库位的对应关系id
Integer id = ObjectFormatUtil.toInteger(redisTemplate.opsForHash().get(key, "id")); Integer id = ObjectFormatUtil.toInteger(redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "id"));
// 获取物料与库位的对应关系 // 获取物料与库位的对应关系
MaterialAndPlaceForViewP placeAndMaterial = placeMapper.findPlaceAndMaterialForViewById(id); MaterialAndPlaceForViewP placeAndMaterial = placeMapper.findPlaceAndMaterialForViewById(id);
// 获取对应的仓库编码 // 获取对应的仓库编码
@ -188,10 +188,10 @@ public class StockTakingServiceImpl implements StockTakingService {
String key = "wms_stockTaking_" + userToken.getId() + "_" + DateUtil.getNowTime() + "_" + mpv.getId(); String key = "wms_stockTaking_" + userToken.getId() + "_" + DateUtil.getNowTime() + "_" + mpv.getId();
Object unit = redisTemplate.opsForHash().get(key, "unit"); Object unit = redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "unit");
String takingResult = (String) redisTemplate.opsForHash().get(key, "takingResult"); String takingResult = (String) redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "takingResult");
Object number = redisTemplate.opsForHash().get(key, "number"); Object number = redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "number");
Object oldInventory = redisTemplate.opsForHash().get(key, "oldInventory"); Object oldInventory = redisPool.getRedisTemplateByDb(15).opsForHash().get(key, "oldInventory");
Double newInventory = ObjectFormatUtil.toDouble(oldInventory); Double newInventory = ObjectFormatUtil.toDouble(oldInventory);
if ("Inventory_down".equals(takingResult)) { if ("Inventory_down".equals(takingResult)) {
// 如果盘亏 // 如果盘亏
@ -218,7 +218,7 @@ public class StockTakingServiceImpl implements StockTakingService {
success += insertStockTaking(param); success += insertStockTaking(param);
param.remove("id"); param.remove("id");
redisTemplate.opsForHash().put(key, "flagForSubmit", "true"); redisPool.getRedisTemplateByDb(15).opsForHash().put(key, "flagForSubmit", "true");
} }
mainIdList.add(param.get("mainId")); mainIdList.add(param.get("mainId"));
} }
@ -438,7 +438,7 @@ public class StockTakingServiceImpl implements StockTakingService {
if ("".equals(s.trim())) { if ("".equals(s.trim())) {
continue; continue;
} }
UserByPort userByPort = PortConfig.findUserByPortByNumber(s); UserByPort userByPort = PublicConfig.findUserByPortByNumber(s);
String workwechat = userByPort.getWorkwechat(); String workwechat = userByPort.getWorkwechat();
if (workwechat == null || "".equals(workwechat)) { if (workwechat == null || "".equals(workwechat)) {
workwechat = userByPort.getWechat(); workwechat = userByPort.getWechat();
@ -568,29 +568,26 @@ public class StockTakingServiceImpl implements StockTakingService {
if (normalMinId.size() > 0) { if (normalMinId.size() > 0) {
// 抄送盘点调账记录给盘点人员 // 抄送盘点调账记录给盘点人员
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override // 获取盘点人员
public void run() {
// 获取盘点人员
// UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), userToken); // UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), userToken);
// String workwechat = originator.getWorkwechat(); // String workwechat = originator.getWorkwechat();
// if(workwechat == null || "".equals(workwechat)){ // if(workwechat == null || "".equals(workwechat)){
// workwechat = originator.getWechat(); // workwechat = originator.getWechat();
// } // }
JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("PangFuZhen,", mainId, normalMinId, userAgent); JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("PangFuZhen,", mainId, normalMinId, userAgent);
// JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, mainId, normalMinId, userAgent); // JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, mainId, normalMinId, userAgent);
// 将当前返回结果保存到redis中 // 将当前返回结果保存到redis中
if (jsonObject != null) { if (jsonObject != null) {
Map<String, Object> QyWxMessageMap = new HashMap<>(); Map<String, Object> QyWxMessageMap = new HashMap<>();
QyWxMessageMap.put("MsgId", jsonObject.getString("msgid")); QyWxMessageMap.put("MsgId", jsonObject.getString("msgid"));
QyWxMessageMap.put("responseCode", jsonObject.getString("response_code")); QyWxMessageMap.put("responseCode", jsonObject.getString("response_code"));
// key user:300450:QyWxOut:1 // key user:300450:QyWxOut:1
redisTemplate.opsForHash().putAll("user:" + userToken.getNumber() + ":QyWxStockTakingCompleteId:" + mainId, QyWxMessageMap); redisPool.getRedisTemplateByDb(14).opsForHash().putAll("user:" + userToken.getNumber() + ":QyWxStockTakingCompleteId:" + mainId, QyWxMessageMap);
// 设置过期时间为三天 // 设置过期时间为三天
redisTemplate.expire("user:" + userToken.getNumber() + ":QyWxStockTakingCompleteId:" + mainId, 72, TimeUnit.HOURS); redisPool.getRedisTemplateByDb(14).expire("user:" + userToken.getNumber() + ":QyWxStockTakingCompleteId:" + mainId, 72, TimeUnit.HOURS);
}
} }
}).start(); });
} else { } else {
map.put("state", 1); map.put("state", 1);
} }
@ -605,44 +602,27 @@ public class StockTakingServiceImpl implements StockTakingService {
map.put("departmentManager", userToken.getNumber()); map.put("departmentManager", userToken.getNumber());
stockTakingMapper.updateStockTaking(map); stockTakingMapper.updateStockTaking(map);
/*// 更新其他卡片
String finalStockTakingResult = stockTakingResult;
new Thread(new Runnable() {
@Override
public void run() {
// 获取responseCode(key为申请人number)
//获取申请人信息
Integer originator = mainRecord.getOriginator();
UserByPort userByPort = LinkInterfaceUtil.FindUserById(originator, userToken);
String key = "user:" + userByPort.getNumber() + ":QyWxStockTakingId:" + mainId;
String responseCode = (String) redisTemplate.opsForHash().get(key, "responseCode");
qyWxOperationService.updateTemplateCard(responseCode, userToken.getName(), finalStockTakingResult, userAgent);
}
}).start();*/
// 开启流程通知其他人忽略审批流程 // 开启流程通知其他人忽略审批流程
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override String departmentManager1 = mainRecord.getDepartmentManager();
public void run() { String[] split1 = departmentManager1.split(",");
String departmentManager1 = mainRecord.getDepartmentManager(); StringBuilder QyWxUid1 = new StringBuilder();
String[] split = departmentManager1.split(","); for (String s : split1) {
StringBuilder QyWxUid = new StringBuilder(); if ("".equals(s.trim())) {
for (String s : split) { continue;
if ("".equals(s.trim())) {
continue;
}
UserByPort userByPort = PortConfig.findUserByPortByNumber(s);
String workwechat = userByPort.getWorkwechat();
if (workwechat == null || "".equals(workwechat)) {
workwechat = userByPort.getWechat();
}
QyWxUid.append(workwechat).append(",");
} }
String s = QyWxUid.toString(); UserByPort userByPort = PublicConfig.findUserByPortByNumber(s);
s = "PangFuZhen,"; String workwechat = userByPort.getWorkwechat();
qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toInteger(mainId), s, userAgent, 2); if (workwechat == null || "".equals(workwechat)) {
workwechat = userByPort.getWechat();
}
QyWxUid1.append(workwechat).append(",");
} }
}).start(); String s = QyWxUid1.toString();
s = "PangFuZhen,";
qyWxOperationService.sendMessageForOtherUserByCard(ObjectFormatUtil.toInteger(mainId), s, userAgent, 2);
});
return result; return result;
} }
@ -683,7 +663,7 @@ public class StockTakingServiceImpl implements StockTakingService {
if ("".equals(s.trim())) { if ("".equals(s.trim())) {
continue; continue;
} }
UserByPort userByPort = PortConfig.findUserByPortByNumber(s); UserByPort userByPort = PublicConfig.findUserByPortByNumber(s);
String workwechat = userByPort.getWorkwechat(); String workwechat = userByPort.getWorkwechat();
if (workwechat == null || "".equals(workwechat)) { if (workwechat == null || "".equals(workwechat)) {
workwechat = userByPort.getWechat(); workwechat = userByPort.getWechat();
@ -728,7 +708,7 @@ public class StockTakingServiceImpl implements StockTakingService {
String key = "wms_stockTaking_" + userToken.getId() + "_" + DateUtil.getNowTime() + "_" + placeAndMaterialByMidAndPid.getId(); String key = "wms_stockTaking_" + userToken.getId() + "_" + DateUtil.getNowTime() + "_" + placeAndMaterialByMidAndPid.getId();
redisTemplate.delete(key); redisPool.getRedisTemplateByDb(15).delete(key);
if ("Inventory_normal".equals(takingResult)) { if ("Inventory_normal".equals(takingResult)) {
@ -1141,28 +1121,22 @@ public class StockTakingServiceImpl implements StockTakingService {
map.put("minIds", minIds); map.put("minIds", minIds);
// 开启一个线程用于发送抄送信息给负责人 // 开启一个线程用于发送抄送信息给负责人
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override String s = QyWxUid.toString();
public void run() { s = "PangFuZhen,";
String s = QyWxUid.toString(); JSONObject jsonObject = qyWxOperationService.sendCcStockTakingMessageToHead(s, map, userToken, mainRecord, userAgent);
s = "PangFuZhen,"; });
JSONObject jsonObject = qyWxOperationService.sendCcStockTakingMessageToHead(s, map, userToken, mainRecord, userAgent);
}
}).start();
// 更新其他卡片 // 更新其他卡片
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override // 获取responseCode(key为申请人number)
public void run() { Integer originator = mainRecord.getOriginator();
// 获取responseCode(key为申请人number) UserByPort userByPort = LinkInterfaceUtil.FindUserById(originator, userToken);
Integer originator = mainRecord.getOriginator(); //获取申请人信息
UserByPort userByPort = LinkInterfaceUtil.FindUserById(originator, userToken); String key = "user:" + userByPort.getNumber() + ":QyWxStockTakingCompleteId:" + mainId;
//获取申请人信息 String responseCode = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get(key, "responseCode");
String key = "user:" + userByPort.getNumber() + ":QyWxStockTakingCompleteId:" + mainId; qyWxOperationService.updateButtonTemplateCardToUnEnable(responseCode, userToken.getName(), "处理", userAgent);
String responseCode = (String) redisTemplate.opsForHash().get(key, "responseCode"); });
qyWxOperationService.updateButtonTemplateCardToUnEnable(responseCode, userToken.getName(), "处理", userAgent);
}
}).start();
return result; return result;
} }
@ -1187,7 +1161,7 @@ public class StockTakingServiceImpl implements StockTakingService {
// 点击用户 // 点击用户
String fromUserName = templateCard.getFromUserName(); String fromUserName = templateCard.getFromUserName();
// 根据userId获取处理人 // 根据userId获取处理人
Map<String, Object> portInfo = PortConfig.findUserByQyWxUserId(fromUserName); Map<String, Object> portInfo = PublicConfig.findUserByQyWxUserId(fromUserName);
UserByPort userByPort = (UserByPort) portInfo.get("user"); UserByPort userByPort = (UserByPort) portInfo.get("user");
// 用于最终更新 // 用于最终更新
@ -1246,7 +1220,7 @@ public class StockTakingServiceImpl implements StockTakingService {
String key = "wms_stockTaking_" + userByPort.getId() + "_" + DateUtil.getNowTime() + "_" + placeAndMaterialByMidAndPid.getId(); String key = "wms_stockTaking_" + userByPort.getId() + "_" + DateUtil.getNowTime() + "_" + placeAndMaterialByMidAndPid.getId();
redisTemplate.delete(key); redisPool.getRedisTemplateByDb(15).delete(key);
if ("Inventory_normal".equals(takingResult)) { if ("Inventory_normal".equals(takingResult)) {
@ -1670,30 +1644,27 @@ public class StockTakingServiceImpl implements StockTakingService {
// 开启一个线程用于发送抄送信息给负责人 // 开启一个线程用于发送抄送信息给负责人
StockTaking finalMainRecord = mainRecord; StockTaking finalMainRecord = mainRecord;
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override map.put("minIds", minIds);
public void run() { String departmentManager = mainRecord.getDepartmentManager();
map.put("minIds", minIds); StringBuilder QyWxUid = new StringBuilder();
String departmentManager = mainRecord.getDepartmentManager(); String[] split = departmentManager.split(",");
StringBuilder QyWxUid = new StringBuilder(); for (int i = 0; i < split.length; i++) {
String[] split = departmentManager.split(","); String s = split[i];
for (int i = 0; i < split.length; i++) { if ("".equals(s.trim())) {
String s = split[i]; continue;
if ("".equals(s.trim())) { }
continue; UserByPort userByPort1 = PublicConfig.findUserByPortByNumber(s);
} String workwechat = userByPort1.getWorkwechat();
UserByPort userByPort1 = PortConfig.findUserByPortByNumber(s); if (workwechat == null || "".equals(workwechat)) {
String workwechat = userByPort1.getWorkwechat(); workwechat = userByPort1.getWechat();
if (workwechat == null || "".equals(workwechat)) {
workwechat = userByPort1.getWechat();
}
QyWxUid.append(workwechat).append(",");
} }
String s = QyWxUid.toString(); QyWxUid.append(workwechat).append(",");
s = "PangFuZhen,";
JSONObject jsonObject = qyWxOperationService.sendCcStockTakingMessageToHead(s, map, null, finalMainRecord, userAgent);
} }
}).start(); String s = QyWxUid.toString();
s = "PangFuZhen,";
JSONObject jsonObject = qyWxOperationService.sendCcStockTakingMessageToHead(s, map, null, finalMainRecord, userAgent);
});
return 1; return 1;
} }
@ -1722,7 +1693,7 @@ public class StockTakingServiceImpl implements StockTakingService {
// 获取审批人userId // 获取审批人userId
String userId = approver.getUserId(); String userId = approver.getUserId();
// 获取审批人 // 获取审批人
Map<String, Object> portInfo = PortConfig.findUserByQyWxUserId(userId); Map<String, Object> portInfo = PublicConfig.findUserByQyWxUserId(userId);
UserByPort approver_user = (UserByPort) portInfo.get("user"); UserByPort approver_user = (UserByPort) portInfo.get("user");
@ -1750,7 +1721,7 @@ public class StockTakingServiceImpl implements StockTakingService {
if ("".equals(s.trim())) { if ("".equals(s.trim())) {
continue; continue;
} }
UserByPort userByPort = PortConfig.findUserByPortByNumber(s); UserByPort userByPort = PublicConfig.findUserByPortByNumber(s);
String workwechat = userByPort.getWorkwechat(); String workwechat = userByPort.getWorkwechat();
if (workwechat == null || "".equals(workwechat)) { if (workwechat == null || "".equals(workwechat)) {
workwechat = userByPort.getWechat(); workwechat = userByPort.getWechat();
@ -1883,29 +1854,26 @@ public class StockTakingServiceImpl implements StockTakingService {
// 抄送盘点调账记录给盘点人员 // 抄送盘点调账记录给盘点人员
if (normalMinId.size() > 0) { if (normalMinId.size() > 0) {
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override // 获取盘点人员
public void run() {
// 获取盘点人员
// UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), null); // UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), null);
// String workwechat = originator.getWorkwechat(); // String workwechat = originator.getWorkwechat();
// if(workwechat == null || "".equals(workwechat)){ // if(workwechat == null || "".equals(workwechat)){
// workwechat = originator.getWechat(); // workwechat = originator.getWechat();
// } // }
JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("PangFuZhen,", ObjectFormatUtil.toInteger(mainId), normalMinId, userAgent); JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("PangFuZhen,", ObjectFormatUtil.toInteger(mainId), normalMinId, userAgent);
// JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, ObjectFormatUtil.toInteger(mainId), normalMinId, userAgent); // JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, ObjectFormatUtil.toInteger(mainId), normalMinId, userAgent);
// 将当前返回结果保存到redis中 // 将当前返回结果保存到redis中
if (jsonObject != null) { if (jsonObject != null) {
Map<String, Object> QyWxMessageMap = new HashMap<>(); Map<String, Object> QyWxMessageMap = new HashMap<>();
QyWxMessageMap.put("MsgId", jsonObject.getString("msgid")); QyWxMessageMap.put("MsgId", jsonObject.getString("msgid"));
QyWxMessageMap.put("responseCode", jsonObject.getString("response_code")); QyWxMessageMap.put("responseCode", jsonObject.getString("response_code"));
// key user:300450:QyWxOut:1 // key user:300450:QyWxOut:1
redisTemplate.opsForHash().putAll("user:" + approver_user.getNumber() + ":QyWxStockTakingCompleteId:" + mainId, QyWxMessageMap); redisPool.getRedisTemplateByDb(14).opsForHash().putAll("user:" + approver_user.getNumber() + ":QyWxStockTakingCompleteId:" + mainId, QyWxMessageMap);
// 设置过期时间为三天 // 设置过期时间为三天
redisTemplate.expire("user:" + approver_user.getNumber() + ":QyWxStockTakingCompleteId:" + mainId, 72, TimeUnit.HOURS); redisPool.getRedisTemplateByDb(14).expire("user:" + approver_user.getNumber() + ":QyWxStockTakingCompleteId:" + mainId, 72, TimeUnit.HOURS);
}
} }
}).start(); });
} else { } else {
map.put("state", 1); map.put("state", 1);
@ -2755,22 +2723,19 @@ public class StockTakingServiceImpl implements StockTakingService {
// 开启一个线程用于发送转移信息给盘点人员 // 开启一个线程用于发送转移信息给盘点人员
StockTaking finalMainRecord = mainRecord; StockTaking finalMainRecord = mainRecord;
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override Integer originator = finalMainRecord.getOriginator();
public void run() { map.put("minIds", minIds);
Integer originator = finalMainRecord.getOriginator(); StringBuilder departMentHeadQyWxName = new StringBuilder();
map.put("minIds", minIds); UserByPort userByPort = LinkInterfaceUtil.FindUserById(ObjectFormatUtil.toInteger(originator), userToken);
StringBuilder departMentHeadQyWxName = new StringBuilder(); String workwechat = userByPort.getWorkwechat();
UserByPort userByPort = LinkInterfaceUtil.FindUserById(ObjectFormatUtil.toInteger(originator), userToken); if (workwechat == null || "".equals(workwechat)) {
String workwechat = userByPort.getWorkwechat(); workwechat = userByPort.getWechat();
if (workwechat == null || "".equals(workwechat)) {
workwechat = userByPort.getWechat();
}
// departMentHeadQyWxName.append(workwechat+",");
departMentHeadQyWxName.append("PangFuZhen,");
JSONObject jsonObject = qyWxOperationService.sendCcStockTakingTransferMessageToHead(departMentHeadQyWxName.toString(), map, userToken, finalMainRecord, userAgent);
} }
}).start(); // departMentHeadQyWxName.append(workwechat+",");
departMentHeadQyWxName.append("PangFuZhen,");
JSONObject jsonObject = qyWxOperationService.sendCcStockTakingTransferMessageToHead(departMentHeadQyWxName.toString(), map, userToken, finalMainRecord, userAgent);
});
// 更新盘点记录 // 更新盘点记录
@ -2808,7 +2773,7 @@ public class StockTakingServiceImpl implements StockTakingService {
// 点击用户 // 点击用户
String fromUserName = templateCard.getFromUserName(); String fromUserName = templateCard.getFromUserName();
// 根据userId获取处理人 // 根据userId获取处理人
Map<String, Object> portInfo = PortConfig.findUserByQyWxUserId(fromUserName); Map<String, Object> portInfo = PublicConfig.findUserByQyWxUserId(fromUserName);
UserByPort userByPort = (UserByPort) portInfo.get("user"); UserByPort userByPort = (UserByPort) portInfo.get("user");
// 用于最终更新 // 用于最终更新
@ -2946,46 +2911,40 @@ public class StockTakingServiceImpl implements StockTakingService {
if (flag) { if (flag) {
// 抄送盘点调账记录给盘点人员 // 抄送盘点调账记录给盘点人员
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute((Runnable) () -> {
@Override // 获取盘点人员
public void run() { UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), null);
// 获取盘点人员
UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), null);
// String workwechat = originator.getWorkwechat(); // String workwechat = originator.getWorkwechat();
// if(workwechat == null || "".equals(workwechat)){ // if(workwechat == null || "".equals(workwechat)){
// workwechat = originator.getWechat(); // workwechat = originator.getWechat();
// } // }
JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("PangFuZhen,", mainId, normalMinIds, userAgent); JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage("PangFuZhen,", mainId, normalMinIds, userAgent);
// JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, mainId, normalMinIds, userAgent); // JSONObject jsonObject = qyWxOperationService.sendQyWxToStockTakingMessage(workwechat, mainId, normalMinIds, userAgent);
if (jsonObject != null) { if (jsonObject != null) {
// 将当前返回结果保存到redis中 // 将当前返回结果保存到redis中
Map<String, Object> QyWxMessageMap = new HashMap<>(); Map<String, Object> QyWxMessageMap = new HashMap<>();
QyWxMessageMap.put("MsgId", jsonObject.getString("msgid")); QyWxMessageMap.put("MsgId", jsonObject.getString("msgid"));
QyWxMessageMap.put("responseCode", jsonObject.getString("response_code")); QyWxMessageMap.put("responseCode", jsonObject.getString("response_code"));
// key user:300450:QyWxOut:1 // key user:300450:QyWxOut:1
// 申请人number // 申请人number
redisTemplate.opsForHash().putAll("user:" + originator.getNumber() + ":QyWxStockTakingCompleteId:" + mainId, QyWxMessageMap); redisPool.getRedisTemplateByDb(14).opsForHash().putAll("user:" + originator.getNumber() + ":QyWxStockTakingCompleteId:" + mainId, QyWxMessageMap);
// 设置过期时间为三天 // 设置过期时间为三天
redisTemplate.expire("user:" + originator.getNumber() + ":QyWxStockTakingCompleteId:" + mainId, 72, TimeUnit.HOURS); redisPool.getRedisTemplateByDb(14).expire("user:" + originator.getNumber() + ":QyWxStockTakingCompleteId:" + mainId, 72, TimeUnit.HOURS);
}
} }
}).start(); });
} else { } else {
// 发送错误消息提醒负责人 // 发送错误消息提醒负责人
new Thread(new Runnable() { SendQyWxMessageThreadPool.execute(() -> {
@Override // 获取盘点人员
public void run() { UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), null);
// 获取盘点人员
UserByPort originator = LinkInterfaceUtil.FindUserById(mainRecord.getOriginator(), null);
// String workwechat = originator.getWorkwechat(); // String workwechat = originator.getWorkwechat();
// if(workwechat == null || "".equals(workwechat)){ // if(workwechat == null || "".equals(workwechat)){
// workwechat = originator.getWechat(); // workwechat = originator.getWechat();
// } // }
qyWxOperationService.sendStockTakingErrMessageToHead("PangFuZhen,", errIds, mainRecord, null, userAgent); qyWxOperationService.sendStockTakingErrMessageToHead("PangFuZhen,", errIds, mainRecord, null, userAgent);
// qyWxOperationService.sendStockTakingErrMessageToHead(workwechat, errIds, mainRecord, null, userAgent); // qyWxOperationService.sendStockTakingErrMessageToHead(workwechat, errIds, mainRecord, null, userAgent);
} });
}).start();
} }
} else { } else {
map.put("state", departmentManagerState); map.put("state", departmentManagerState);
@ -3012,21 +2971,21 @@ public class StockTakingServiceImpl implements StockTakingService {
*/ */
public String createTakingCode(String depositoryName) { public String createTakingCode(String depositoryName) {
String key = "wms_stockTakingNumber"; String key = "wms_stockTakingNumber";
RLock lock = redissonClient.getLock(key); RLock lock = redissonClient.getLock(PublicConfig.redis_Lock_name);
String first = "GK"; String first = "GK";
// 获取仓库的首字母 // 获取仓库的首字母
depositoryName = WordUtil.getPinYinHeadChar(depositoryName); depositoryName = WordUtil.getPinYinHeadChar(depositoryName);
String nowTime = DateUtil.getNowTime(); String nowTime = DateUtil.getNowTime();
lock.lock(5, TimeUnit.SECONDS); lock.lock(5, TimeUnit.SECONDS);
String orderNumber = redisTemplate.opsForValue().get(key); String orderNumber = redisPool.getRedisTemplateByDb(15).opsForValue().get(key);
if (orderNumber == null) { if (orderNumber == null) {
redisTemplate.opsForValue().set(key, "1", DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); redisPool.getRedisTemplateByDb(15).opsForValue().set(key, "1", DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
orderNumber = "1"; orderNumber = "1";
} }
int newNumber = ObjectFormatUtil.toInteger(orderNumber) + 1; int newNumber = ObjectFormatUtil.toInteger(orderNumber) + 1;
redisTemplate.boundValueOps(key).set(String.valueOf(newNumber), DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); redisPool.getRedisTemplateByDb(15).boundValueOps(key).set(String.valueOf(newNumber), DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS);
lock.unlock(); lock.unlock();
orderNumber = String.format("%09d", ObjectFormatUtil.toInteger(orderNumber)); orderNumber = String.format("%04d", ObjectFormatUtil.toInteger(orderNumber));
String code = first + depositoryName + nowTime + orderNumber; String code = first + depositoryName + nowTime + orderNumber;
return code; return code;
} }

3
src/main/java/com/dreamchaser/depository_manage/service/impl/UserServiceImpl.java

@ -28,9 +28,6 @@ public class UserServiceImpl implements UserService {
@Autowired @Autowired
DepositoryMapper depositoryMapper; DepositoryMapper depositoryMapper;
@Autowired
RedisTemplate<Object,Object> redisTemplate;
@Override @Override
public Integer findCount() { public Integer findCount() {
return userMapper.findCount(); return userMapper.findCount();

27
src/main/java/com/dreamchaser/depository_manage/utils/LinkInterfaceUtil.java

@ -2,8 +2,7 @@ package com.dreamchaser.depository_manage.utils;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.dreamchaser.depository_manage.config.QyWxConfig;
import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.pojo.AdministrationP; import com.dreamchaser.depository_manage.pojo.AdministrationP;
import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool;
@ -29,7 +28,7 @@ public class LinkInterfaceUtil {
* @return 查询结果 * @return 查询结果
*/ */
public static List<UserByPort> FindUserByMap(Map<String, Object> map, UserByPort userToken) { public static List<UserByPort> FindUserByMap(Map<String, Object> map, UserByPort userToken) {
String url = PortConfig.external_url + "/staff/archiveslist"; String url = PublicConfig.external_url + "/staff/archiveslist";
String jsonString = JSONObject.toJSONString(map); String jsonString = JSONObject.toJSONString(map);
JSONObject paramObject = JSONObject.parseObject(jsonString); JSONObject paramObject = JSONObject.parseObject(jsonString);
String post = null; String post = null;
@ -58,7 +57,7 @@ public class LinkInterfaceUtil {
* @return * @return
*/ */
public static List<AdministrationP> findAllCompany(UserByPort userByPort) { public static List<AdministrationP> findAllCompany(UserByPort userByPort) {
String url = PortConfig.external_url + "/org/govlist"; String url = PublicConfig.external_url + "/org/govlist";
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("superior", "313"); map.put("superior", "313");
map.put("level", 3); map.put("level", 3);
@ -94,7 +93,7 @@ public class LinkInterfaceUtil {
* @return 查询结果 * @return 查询结果
*/ */
public static UserByPort FindUserById(Integer id, UserByPort userToken) { public static UserByPort FindUserById(Integer id, UserByPort userToken) {
String url = PortConfig.external_url + "/staff/archivescont"; String url = PublicConfig.external_url + "/staff/archivescont";
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("id", id); map.put("id", id);
String jsonString = JSONObject.toJSONString(map); String jsonString = JSONObject.toJSONString(map);
@ -119,7 +118,7 @@ public class LinkInterfaceUtil {
* @return 查询结果 * @return 查询结果
*/ */
public static List<UserByPort> FindUserByAdminorg(Integer id, UserByPort userToken) { public static List<UserByPort> FindUserByAdminorg(Integer id, UserByPort userToken) {
String url = PortConfig.external_url + "/staff/archivescont"; String url = PublicConfig.external_url + "/staff/archivescont";
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("adminorg", id); map.put("adminorg", id);
String jsonString = JSONObject.toJSONString(map); String jsonString = JSONObject.toJSONString(map);
@ -152,7 +151,7 @@ public class LinkInterfaceUtil {
* @return 查询结果 * @return 查询结果
*/ */
public static Administration getCompany(Integer id, UserByPort userByPort) { public static Administration getCompany(Integer id, UserByPort userByPort) {
String url = PortConfig.external_url + "/org/getgovcont"; String url = PublicConfig.external_url + "/org/getgovcont";
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("id", id); map.put("id", id);
map.put("idstr", id.toString()); map.put("idstr", id.toString());
@ -177,7 +176,7 @@ public class LinkInterfaceUtil {
* @return 查询结果 * @return 查询结果
*/ */
public static List<AdministrationP> findCompanyBySuperior(String superior, UserByPort userByPort) { public static List<AdministrationP> findCompanyBySuperior(String superior, UserByPort userByPort) {
String url = PortConfig.external_url + "/org/govthree"; String url = PublicConfig.external_url + "/org/govthree";
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("idstr", superior); map.put("idstr", superior);
map.put("level", 0); map.put("level", 0);
@ -212,7 +211,7 @@ public class LinkInterfaceUtil {
* @return 查询结果 * @return 查询结果
*/ */
public static Post findPostById(Integer id, UserByPort userByPort) { public static Post findPostById(Integer id, UserByPort userByPort) {
String url = PortConfig.external_url + "/org/getpositioncont"; String url = PublicConfig.external_url + "/org/getpositioncont";
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("id", id); map.put("id", id);
map.put("idstr", id.toString()); map.put("idstr", id.toString());
@ -242,7 +241,7 @@ public class LinkInterfaceUtil {
token = (String) request.getSession().getAttribute("userToken"); token = (String) request.getSession().getAttribute("userToken");
} }
UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); UserByPort userByPort = AuthenticationTokenPool.getUserToken(token);
String url = PortConfig.external_url_6666 + "/base/captcha"; String url = PublicConfig.external_url_6666 + "/base/captcha";
JSONObject param = new JSONObject(); JSONObject param = new JSONObject();
String post = null; String post = null;
try { try {
@ -262,7 +261,7 @@ public class LinkInterfaceUtil {
*/ */
public static Map<String, Object> findAdministration(UserByPort userByPort) { public static Map<String, Object> findAdministration(UserByPort userByPort) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
String url = PortConfig.external_url + "/org/govlist"; String url = PublicConfig.external_url + "/org/govlist";
String superior = "313"; String superior = "313";
map.put("superior", superior); map.put("superior", superior);
map.put("state", 1); map.put("state", 1);
@ -301,7 +300,7 @@ public class LinkInterfaceUtil {
* @return * @return
*/ */
public static JSONArray getPostTree(UserByPort userByPort) { public static JSONArray getPostTree(UserByPort userByPort) {
String url = PortConfig.external_url + "/org/govthreeing"; String url = PublicConfig.external_url + "/org/govthreeing";
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
param.put("id", userByPort.getCompany()); param.put("id", userByPort.getCompany());
param.put("idstr", ""); param.put("idstr", "");
@ -328,7 +327,7 @@ public class LinkInterfaceUtil {
*/ */
public static List<String> getUserAccessToAddresses(UserByPort userToken) { public static List<String> getUserAccessToAddresses(UserByPort userToken) {
//定义链接地址 //定义链接地址
String url = PortConfig.external_url_6666 + "/system_authorizing/obtain_authorization"; String url = PublicConfig.external_url_6666 + "/system_authorizing/obtain_authorization";
System.out.println(url); System.out.println(url);
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
param.put("system", "cangchu"); param.put("system", "cangchu");
@ -353,7 +352,7 @@ public class LinkInterfaceUtil {
public static JSONArray getOrgAndPostThree(UserByPort userToken){ public static JSONArray getOrgAndPostThree(UserByPort userToken){
//定义链接地址 //定义链接地址
String url = PortConfig.external_url + "/org/get_organdpost_three"; String url = PublicConfig.external_url + "/org/get_organdpost_three";
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
param.put("id", "309"); param.put("id", "309");
param.put("level", 0); param.put("level", 0);

5
src/main/java/com/dreamchaser/depository_manage/utils/Md5Util.java

@ -1,5 +0,0 @@
package com.dreamchaser.depository_manage.utils;
public class Md5Util {
}

8
src/main/resources/application-test.yml

@ -60,7 +60,7 @@ spring:
redis: redis:
port: 6379 port: 6379
host: 127.0.0.1 host: 127.0.0.1
database: 0 database: 5
jedis: jedis:
pool: pool:
min-idle: 10 min-idle: 10
@ -70,7 +70,11 @@ spring:
timeout: 2000ms timeout: 2000ms
redisPool:
port: 6379
host: 127.0.0.1
dbs: 5,14,15
password:
server: server:
mybatis: mybatis:

3
src/main/resources/logback-spring.xml

@ -29,7 +29,7 @@
<!-- 日志保留天数 --> <!-- 日志保留天数 -->
<maxHistory>30</maxHistory> <maxHistory>30</maxHistory>
<!-- 日志文件上限大小,达到指定大小后删除旧的日志文件 --> <!-- 日志文件上限大小,达到指定大小后删除旧的日志文件 -->
<totalSizeCap>2GB</totalSizeCap> <totalSizeCap>1GB</totalSizeCap>
<!-- 每个日志文件的最大值 --> <!-- 每个日志文件的最大值 -->
<timeBasedFileNamingAndTriggeringPolicy <timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
@ -148,7 +148,6 @@
<logger name="java.sql.PreparedStatement" level="DEBUG" /> <logger name="java.sql.PreparedStatement" level="DEBUG" />
<logger name="java.sql.ResultSet" level="DEBUG" /> <logger name="java.sql.ResultSet" level="DEBUG" />
<logger name="com.dreamchaser.dream.depository_manage.mapper" level="DEBUG" /> <logger name="com.dreamchaser.dream.depository_manage.mapper" level="DEBUG" />
<!-- <logger name="com.dreamchaser.mapper" level="debug"/>-->
</springProfile> </springProfile>
<!-- endregion --> <!-- endregion -->

4
src/main/resources/redisson-config.yml

@ -2,7 +2,7 @@
singleServerConfig: singleServerConfig:
address: "redis://127.0.0.1:6379" address: "redis://127.0.0.1:6379"
clientName: null clientName: null
database: 7 #选择使用哪个数据库0~15 database: 15 #选择使用哪个数据库0~15
idleConnectionTimeout: 10000 idleConnectionTimeout: 10000
pingTimeout: 1000 pingTimeout: 1000
connectTimeout: 10000 connectTimeout: 10000
@ -22,5 +22,5 @@ singleServerConfig:
threads: 16 threads: 16
nettyThreads: 32 nettyThreads: 32
codec: codec:
class: "org.redisson.codec.JsonJacksonCodec" class: "org.redisson.client.codec.StringCodec"
transportMode: "NIO" transportMode: "NIO"

8
src/test/java/com/dreamchaser/depository_manage/BarChartTest.java

@ -84,7 +84,9 @@ public class BarChartTest {
*/ */
List<Object> getBarChartData( UserByPort userByPort){ List<Object> getBarChartData( UserByPort userByPort){
Map<String, Integer> depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort); Map<String, Integer> depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort);
ExecutorService exs = Executors.newFixedThreadPool(2); int threadSize = 2;
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 定义CompletionService // 定义CompletionService
@ -164,7 +166,9 @@ public class BarChartTest {
days.add(format); days.add(format);
} }
// 定义线程 // 定义线程
ExecutorService exs = Executors.newFixedThreadPool(depositoryAllNameAndId.size()); int threadSize = depositoryAllNameAndId.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService // 1.定义CompletionService

4
src/test/java/com/dreamchaser/depository_manage/InventoryLineChartTest.java

@ -125,7 +125,9 @@ public class InventoryLineChartTest {
} }
// 定义线程 // 定义线程
ExecutorService exs = Executors.newFixedThreadPool(depositoryAllNameAndId.size()); int threadSize = depositoryAllNameAndId.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService // 1.定义CompletionService

3
src/test/java/com/dreamchaser/depository_manage/InventorySunburstDataTest.java

@ -96,7 +96,8 @@ public class InventorySunburstDataTest {
// 定义每次开启的线程数 // 定义每次开启的线程数
int threadSize = depositoryList.size(); int threadSize = depositoryList.size();
// 开启对应数量的线程 // 开启对应数量的线程
ExecutorService exs = Executors.newFixedThreadPool(threadSize); ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 定义线程结果集 // 定义线程结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 定义CompletionService // 定义CompletionService

4
src/test/java/com/dreamchaser/depository_manage/LineChartTest.java

@ -102,7 +102,9 @@ public class LineChartTest {
days.add(format); days.add(format);
} }
// 定义线程 // 定义线程
ExecutorService exs = Executors.newFixedThreadPool(depositoryAllNameAndId.size()); int threadSize = depositoryAllNameAndId.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService // 1.定义CompletionService

80
src/test/java/com/dreamchaser/depository_manage/OtherTest.java

@ -1,37 +1,30 @@
package com.dreamchaser.depository_manage; package com.dreamchaser.depository_manage;
import com.alibaba.fastjson.JSON; import com.dreamchaser.depository_manage.config.PublicConfig;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig;
import com.dreamchaser.depository_manage.config.QyWx_approval_template.Approval_template_approver;
import com.dreamchaser.depository_manage.entity.Administration;
import com.dreamchaser.depository_manage.entity.Depository;
import com.dreamchaser.depository_manage.entity.MaterialType;
import com.dreamchaser.depository_manage.entity.UserByPort; import com.dreamchaser.depository_manage.entity.UserByPort;
import com.dreamchaser.depository_manage.security.pool.RedisPool;
import com.dreamchaser.depository_manage.mapper.DepositoryMapper; import com.dreamchaser.depository_manage.mapper.DepositoryMapper;
import com.dreamchaser.depository_manage.pojo.AdministrationP;
import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details;
import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details_Approver;
import com.dreamchaser.depository_manage.service.*; import com.dreamchaser.depository_manage.service.*;
import com.dreamchaser.depository_manage.service.impl.QyWxOperationService; import com.dreamchaser.depository_manage.service.impl.QyWxOperationService;
import com.dreamchaser.depository_manage.utils.DateUtil; import com.dreamchaser.depository_manage.utils.DateUtil;
import com.dreamchaser.depository_manage.utils.HttpUtils;
import com.dreamchaser.depository_manage.utils.LinkInterfaceUtil; import com.dreamchaser.depository_manage.utils.LinkInterfaceUtil;
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; import com.dreamchaser.depository_manage.utils.ObjectFormatUtil;
import lombok.Data; import com.dreamchaser.depository_manage.utils.WordUtil;
import org.apache.http.protocol.HTTP; import javafx.scene.control.TableRow;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import org.w3c.dom.ls.LSInput;
import java.io.IOException; import java.lang.reflect.Field;
import java.text.SimpleDateFormat; import java.util.HashMap;
import java.util.*; import java.util.Map;
import java.util.concurrent.*; import java.util.Set;
import java.util.concurrent.TimeUnit;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@ -49,20 +42,53 @@ public class OtherTest {
@Autowired @Autowired
QyWxOperationService qyWxOperationService; QyWxOperationService qyWxOperationService;
@Autowired
static
RedisPool redisPool;
@Test @Test
public void main() { public void main() {
UserByPort userByPort = LinkInterfaceUtil.FindUserById(7060, null); UserByPort userByPort = LinkInterfaceUtil.FindUserById(6235, null);
// ApprovalInfo_Details approvalInfo = new ApprovalInfo_Details(); // Map<String, String> stringObjectMap = objectToMap(userByPort);
// ApprovalInfo_Details_Approver approver = new ApprovalInfo_Details_Approver(); // redisPool.getRedisTemplateByDb(5).opsForHash().putAll(PublicConfig.userInfoRedisPrefix+"300450",stringObjectMap);
// approver.setUserId("PangFuZhen"); // System.out.println(stringObjectMap);
// approvalInfo.setApprover(approver); // Set<Object> keys = redisPool.getRedisTemplateByDb(5).opsForHash().keys(PublicConfig.userInfoRedisPrefix + "300450");
// depositoryRecordService.reviewByQyWxApprovalIn("[2]",approvalInfo,"634c7f15fe74b4ba6c857df4032ed21e","2","202304260024");
// stockTakingService.reviewByQyWxApproval("4",approvalInfo,"42156e781cdc727e7d5deac872be45a9","2","202304240042");
JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplate("634c7f15fe74b4ba6c857df4032ed21e", userByPort, 20);
} }
public static Map<String, String> objectToMap(Object object){
Map<String,String> dataMap = new HashMap<>();
Class<?> clazz = object.getClass();
for (Field field : clazz.getDeclaredFields()) {
try {
field.setAccessible(true);
Object o = field.get(object);
if(o != null){
dataMap.put(field.getName(), o.toString());
}else{
dataMap.put(field.getName(),"");
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return dataMap;
}
public static <T> T mapToBean(Map<String, ?> map, Class<T> clazz)
throws IllegalAccessException, InstantiationException {
T bean = clazz.newInstance();
BeanMap beanMap = BeanMap.create(bean);
beanMap.putAll(map);
return bean;
}

6
src/test/java/com/dreamchaser/depository_manage/SunburstChartTest.java

@ -45,6 +45,8 @@ public class SunburstChartTest {
List<Object> sourceList = (List<Object>) previousMonth.get("sourceList"); List<Object> sourceList = (List<Object>) previousMonth.get("sourceList");
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
int threadSize = months.size();
ExecutorService exs = Executors.newFixedThreadPool(months.size()); ExecutorService exs = Executors.newFixedThreadPool(months.size());
// 1.定义CompletionService // 1.定义CompletionService
CompletionService<Object> completionService = new ExecutorCompletionService<Object>(exs); CompletionService<Object> completionService = new ExecutorCompletionService<Object>(exs);
@ -86,7 +88,9 @@ public class SunburstChartTest {
@Override @Override
public Object call() throws Exception { public Object call() throws Exception {
List<MaterialType> materialTypeAll = materialTypeService.findMaterialTypeNoParent(); List<MaterialType> materialTypeAll = materialTypeService.findMaterialTypeNoParent();
ExecutorService exs = Executors.newFixedThreadPool(materialTypeAll.size()); int threadSize = materialTypeAll.size();
ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize));
// 结果集 // 结果集
List<Future<Object>> futureList = new ArrayList<Future<Object>>(); List<Future<Object>> futureList = new ArrayList<Future<Object>>();
// 1.定义CompletionService // 1.定义CompletionService

Loading…
Cancel
Save