diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java index 7c78e66b..e6ad9249 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java @@ -4,6 +4,7 @@ import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.pojo.*; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; +import com.dreamchaser.depository_manage.security.pool.HandlesOtherfunctionalThreadPool; import com.dreamchaser.depository_manage.service.*; import com.dreamchaser.depository_manage.utils.*; import lombok.Data; @@ -141,23 +142,13 @@ public class DepositoryController { UserByPort userToken = AuthenticationTokenPool.getUserToken(token); if (map.containsKey("id")) { Integer id = ObjectFormatUtil.toInteger(map.get("id")); - new Thread(new Runnable() { - @Override - public void run() { - RealDeleteSonDepository(id.toString(), userToken); - } - }).start(); + HandlesOtherfunctionalThreadPool.execute(() -> RealDeleteSonDepository(id.toString(), userToken)); return CrudUtil.deleteHandle(depositoryService.deleteDepositoryRecordById(id), 1); } else if (map.containsKey("ids")) { List ids = (List) map.get("ids"); - for (int j = 0; j < ids.size(); j++) { - String id = ids.get(j).toString(); - new Thread(new Runnable() { - @Override - public void run() { - RealDeleteSonDepository(id, userToken); - } - }).start(); + for (Integer integer : ids) { + String id = integer.toString(); + HandlesOtherfunctionalThreadPool.execute(() -> RealDeleteSonDepository(id, userToken)); } return CrudUtil.deleteHandle(depositoryService.deleteDepositoryRecordByIds(ids), ids.size()); } else { @@ -234,25 +225,14 @@ public class DepositoryController { UserByPort userToken = AuthenticationTokenPool.getUserToken(token); if (map.containsKey("id")) { Integer id = ObjectFormatUtil.toInteger(map.get("id")); -// UpdateSonState(id.toString(),3,true); 修改为删除状态 - new Thread(new Runnable() { - @Override - public void run() { - UpdateSonState(id.toString(), 3, true, userToken); - } - }).start(); + HandlesOtherfunctionalThreadPool.execute(() -> UpdateSonState(id.toString(), 3, true, userToken)); return CrudUtil.deleteHandle(depositoryService.changeStateToDeletedById(id), 1); } else if (map.containsKey("ids")) { List ids = (List) map.get("ids"); - for (int i = 0; i < ids.size(); i++) { - String id = ids.get(i).toString(); - new Thread(new Runnable() { - @Override - public void run() { - UpdateSonState(id, 3, true, userToken); - } - }).start(); + for (Integer integer : ids) { + String id = integer.toString(); + HandlesOtherfunctionalThreadPool.execute(() -> UpdateSonState(id, 3, true, userToken)); } return CrudUtil.deleteHandle(depositoryService.changeStateToDeletedByIds(ids), ids.size()); } else { @@ -299,20 +279,10 @@ public class DepositoryController { if (state == 2) { if (map.containsKey("envelop")) { // 封库 - new Thread(new Runnable() { - @Override - public void run() { - UpdateSonState(id, state, true, userToken); - } - }).start(); + HandlesOtherfunctionalThreadPool.execute(() -> UpdateSonState(id, state, true, userToken)); } else { // 禁用仓库 - new Thread(new Runnable() { - @Override - public void run() { - UpdateSonState(id, state, false, userToken); - } - }).start(); + HandlesOtherfunctionalThreadPool.execute(() -> UpdateSonState(id, state, false, userToken)); } } return CrudUtil.insertHandle(depositoryService.updateDepository(map), 1); diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java index e11de56d..d52ac7e9 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java @@ -4,6 +4,7 @@ import com.dreamchaser.depository_manage.entity.MaterialType; import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.pojo.MaterialP; import com.dreamchaser.depository_manage.pojo.RestResponse; +import com.dreamchaser.depository_manage.security.pool.HandlesOtherfunctionalThreadPool; import com.dreamchaser.depository_manage.service.MaterialService; import com.dreamchaser.depository_manage.service.MaterialTypeService; import com.dreamchaser.depository_manage.utils.CrudUtil; @@ -33,17 +34,14 @@ public class MaterialTypeController { public RestResponse insertMaterialType(@RequestBody Map map){ Integer integer = materialTypeService.insertMaterialType(map); // 更新树结构 - new Thread(new Runnable() { - @Override - public void run() { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - materialService.RefreshInitTreeMenus(); + HandlesOtherfunctionalThreadPool.execute(() -> { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); } - }).start(); + materialService.RefreshInitTreeMenus(); + }); return CrudUtil.insertHandle(integer,1); } @@ -86,55 +84,39 @@ public class MaterialTypeController { if (map.containsKey("id")){ Integer id= ObjectFormatUtil.toInteger(map.get("id")); MaterialType materialTypeById = materialTypeService.findMaterialTypeById(id); - new Thread(new Runnable() { - @Override - public void run() { - RealDeleteSonDepository(materialTypeById.getOldId().toString()); - } - }).start(); + HandlesOtherfunctionalThreadPool.execute(() -> RealDeleteSonDepository(materialTypeById.getOldId().toString())); Integer integer = materialTypeService.deleteMaterialTypeById(id); - new Thread(new Runnable() { - @Override - public void run() { - try { - Thread.sleep(3000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - materialService.RefreshInitTreeMenus(); + HandlesOtherfunctionalThreadPool.execute(() -> { + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); } - }).start(); + materialService.RefreshInitTreeMenus(); + }); return CrudUtil.deleteHandle(integer,1); }else if (map.containsKey("ids")){ List ids=(List) map.get("ids"); for (Integer id : ids) { MaterialType materialTypeById = materialTypeService.findMaterialTypeById(id); - new Thread(new Runnable() { - @Override - public void run() { - RealDeleteSonDepository(materialTypeById.getOldId().toString()); - } - }).start(); + HandlesOtherfunctionalThreadPool.execute(() -> RealDeleteSonDepository(materialTypeById.getOldId().toString())); } Integer integer = materialTypeService.deleteMaterialTypeByIds(ids); - new Thread(new Runnable() { - @Override - public void run() { - try { - Thread.sleep(3000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - materialService.RefreshInitTreeMenus(); + HandlesOtherfunctionalThreadPool.execute(() -> { + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); } - }).start(); + materialService.RefreshInitTreeMenus(); + }); return CrudUtil.deleteHandle(integer,ids.size()); }else { throw new MyException("所需请求参数缺失!"); @@ -167,55 +149,39 @@ public class MaterialTypeController { if (map.containsKey("id")){ Integer id= ObjectFormatUtil.toInteger(map.get("id")); MaterialType materialTypeById = materialTypeService.findMaterialTypeById(id); - new Thread(new Runnable() { - @Override - public void run() { - UpdateSonState(materialTypeById.getOldId().toString(),3); - } - }).start(); + HandlesOtherfunctionalThreadPool.execute(() -> UpdateSonState(materialTypeById.getOldId().toString(),3)); Integer integer = materialTypeService.changeStateToDeletedById(id); - new Thread(new Runnable() { - @Override - public void run() { - try { - Thread.sleep(3000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - materialService.RefreshInitTreeMenus(); + HandlesOtherfunctionalThreadPool.execute(() -> { + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); } - }).start(); + materialService.RefreshInitTreeMenus(); + }); return CrudUtil.deleteHandle(integer,1); }else if (map.containsKey("ids")){ List ids=(List) map.get("ids"); for (Integer id : ids) { MaterialType materialTypeById = materialTypeService.findMaterialTypeById(id); - new Thread(new Runnable() { - @Override - public void run() { - UpdateSonState(materialTypeById.getOldId().toString(), 3); - } - }).start(); + HandlesOtherfunctionalThreadPool.execute(() -> UpdateSonState(materialTypeById.getOldId().toString(), 3)); } Integer integer = materialTypeService.changeStateToDeletedByIds(ids); - new Thread(new Runnable() { - @Override - public void run() { - try { - Thread.sleep(3000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - materialService.RefreshInitTreeMenus(); + HandlesOtherfunctionalThreadPool.execute(() -> { + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); } - }).start(); + materialService.RefreshInitTreeMenus(); + }); return CrudUtil.deleteHandle(integer,ids.size()); }else { @@ -238,17 +204,14 @@ public class MaterialTypeController { Integer integer = materialTypeService.updateMaterialType(map); - new Thread(new Runnable() { - @Override - public void run() { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - materialService.RefreshInitTreeMenus(); + HandlesOtherfunctionalThreadPool.execute(() -> { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); } - }).start(); + materialService.RefreshInitTreeMenus(); + }); return CrudUtil.insertHandle(integer,1); } @@ -342,27 +305,19 @@ public class MaterialTypeController { int state = ((int)map.get("state")); String id = (String) map.get("id"); MaterialType materialTypeById = materialTypeService.findMaterialTypeById(ObjectFormatUtil.toInteger(id)); - new Thread(new Runnable() { - @Override - public void run() { - UpdateSonState(materialTypeById.getOldId().toString(), state); - } - }).start(); + HandlesOtherfunctionalThreadPool.execute(() -> UpdateSonState(materialTypeById.getOldId().toString(), state)); Integer integer = materialTypeService.updateMaterialType(map); - new Thread(new Runnable() { - @Override - public void run() { - try { - Thread.sleep(3000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - materialService.RefreshInitTreeMenus(); + HandlesOtherfunctionalThreadPool.execute(() -> { + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); } - }).start(); + materialService.RefreshInitTreeMenus(); + }); return CrudUtil.insertHandle(integer, 1); } diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/NoticeController.java b/src/main/java/com/dreamchaser/depository_manage/controller/NoticeController.java index 2bbaa7de..af0efcf9 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/NoticeController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/NoticeController.java @@ -5,6 +5,7 @@ import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.pojo.NoticeP; import com.dreamchaser.depository_manage.pojo.RestResponse; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; +import com.dreamchaser.depository_manage.security.pool.HandlesOtherfunctionalThreadPool; import com.dreamchaser.depository_manage.service.NoticeService; import com.dreamchaser.depository_manage.service.impl.QyWxOperationService; import com.dreamchaser.depository_manage.utils.CrudUtil; @@ -47,17 +48,8 @@ public class NoticeController { // 获取插入结果 Integer integer = noticeService.addNotice(map,crypt); if (Integer.compare(integer, 1) == 0) { - // 如果成功插入 - - - // 开启线程推送应用消息 - /*new Thread(new Runnable() { - @Override - public void run() { - qyWxOperationService.sendNoticeForAllUser(ObjectFormatUtil.toInteger(map.get("id")),crypt); - } - }).start();*/ + /*HandlesOtherfunctionalThreadPool.execute(() -> qyWxOperationService.sendNoticeForAllUser(ObjectFormatUtil.toInteger(map.get("id")),crypt));*/ } return CrudUtil.insertHandle(integer, 1); diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java b/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java index aeaca3f0..8df42d4f 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java @@ -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.callBackXml_button_templatecard.TemplateCard; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; +import com.dreamchaser.depository_manage.security.pool.HandlesOtherfunctionalThreadPool; import com.dreamchaser.depository_manage.security.pool.RedisPool; import com.dreamchaser.depository_manage.security.pool.UserKeyAndTokenPool; import com.dreamchaser.depository_manage.service.CallBackLogService; @@ -197,44 +198,28 @@ public class QyWxOperationController { if (stockTakingType.contains("review")) { // 开启线程处理审批 - new Thread(new Runnable() { - @Override - public void run() { - Map reviewByQyWx = stockTakingService.reviewByQyWx(templateCard, crypt); - if (reviewByQyWx.containsKey("errMsg")) { + HandlesOtherfunctionalThreadPool.execute(() -> { + Map reviewByQyWx = stockTakingService.reviewByQyWx(templateCard, crypt); + if (reviewByQyWx.containsKey("errMsg")) { - } } - }).start(); + }); } else if (stockTakingType.contains("complete")) { // 开启线程 - new Thread(new Runnable() { - @Override - public void run() { - stockTakingService.completeStockTakingByQyWx(templateCard, crypt); - } - }).start(); + HandlesOtherfunctionalThreadPool.execute(() -> stockTakingService.completeStockTakingByQyWx(templateCard, crypt)); } } else if (templateCardType.contains("out")) { // 如果点击的是出库审核 // 开启线程处理审批 - new Thread(new Runnable() { - @Override - public void run() { - depositoryRecordService.reviewByQyWx(templateCard, crypt); - } - }).start(); + HandlesOtherfunctionalThreadPool.execute(() -> depositoryRecordService.reviewByQyWx(templateCard, crypt)); } // 开启线程更改其他用户卡片模板样式 String finalResult = result; - new Thread(new Runnable() { - @Override - public void run() { - qyWxOperationService.updateButtonTemplateCardToUnEnable(templateCard.getResponseCode(), userByPort.getName(), finalResult, crypt); - } - }).start(); + HandlesOtherfunctionalThreadPool.execute( + () -> + qyWxOperationService.updateButtonTemplateCardToUnEnable(templateCard.getResponseCode(), userByPort.getName(), finalResult, crypt)); // 待加密模板 String sRespData = String.format("" + @@ -528,7 +513,7 @@ public class QyWxOperationController { String spNo = approvalInfo.getSpNo(); // 获取当前审批关联的主订单 - String mainId = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxMessage_"+spNo, "mainId"); + String mainId = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxMessage_" + spNo, "mainId"); // 获取所有审批流程信息 List spRecord_list = approvalInfo.getSpRecord(); @@ -640,7 +625,7 @@ public class QyWxOperationController { // 如果是申请的开放仓库 // 获取当时发送审批时其他部门负责人Id - String otherDepartmentIdList = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxMessage_"+spNo, "otherDepartmentIdList"); + String otherDepartmentIdList = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxMessage_" + spNo, "otherDepartmentIdList"); if (otherDepartmentIdList != null) { for (ApprovalInfo_Details ad : details ) { @@ -669,7 +654,7 @@ public class QyWxOperationController { flagForDepository = 3; // 如果已经完成该审批记录,则进行删除 - redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_"+spNo); + redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_" + spNo); } else { // 如果当前是第一个节点 flagForFirst = false; @@ -681,7 +666,7 @@ public class QyWxOperationController { // 如果完成审批的节点数大于2 flagForDepository = 3; // 如果已经完成该审批记录,则进行删除 - redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_"+spNo); + redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_" + spNo); } else { // 如果当前并不是标签节点后 flagForDepository = 2; @@ -694,35 +679,18 @@ public class QyWxOperationController { ApprovalInfo_Details finalApprovalInfo_details = approvalInfo_details; boolean finalFlagForFirst = flagForFirst; int finalFlagForDepository = flagForDepository; - new Thread(new Runnable() { - @Override - public void run() { - depositoryRecordService.reviewByQyWxApprovalOut(mainId, finalApprovalInfo_details, crypt, spStatus, approvalInfo.getSpNo(), finalFlagForFirst, finalFlagForDepository); - } - }).start(); + HandlesOtherfunctionalThreadPool.execute(() -> depositoryRecordService.reviewByQyWxApprovalOut(mainId, finalApprovalInfo_details, crypt, spStatus, approvalInfo.getSpNo(), finalFlagForFirst, finalFlagForDepository)); } else if (QyWxConfig.stockTaking_approval_template_id.equals(approvalInfo.getTemplateId())) { // 如果是库存盘点审批 // 开启一个线程用于进行处理 ApprovalInfo_Details finalApprovalInfo_details = approvalInfo_details; - new Thread(new Runnable() { - @Override - public void run() { - stockTakingService.reviewByQyWxApproval(mainId, finalApprovalInfo_details, crypt, spStatus, approvalInfo.getSpNo()); - } - }).start(); + HandlesOtherfunctionalThreadPool.execute(() -> stockTakingService.reviewByQyWxApproval(mainId, finalApprovalInfo_details, crypt, spStatus, approvalInfo.getSpNo())); } else if (QyWxConfig.in_approval_template_id.equals(approvalInfo.getTemplateId())) { // 如果是入库审批 // 开启一个线程用于进行处理 ApprovalInfo_Details finalApprovalInfo_details = approvalInfo_details; - new Thread(new Runnable() { - - @Override - public void run() { - depositoryRecordService.reviewByQyWxApprovalIn(mainId, finalApprovalInfo_details, crypt, spStatus, spNo); - - } - }).start(); + HandlesOtherfunctionalThreadPool.execute(() -> depositoryRecordService.reviewByQyWxApprovalIn(mainId, finalApprovalInfo_details, crypt, spStatus, spNo)); } // 开启一个线程用于进行下步操作 } diff --git a/src/main/java/com/dreamchaser/depository_manage/security/pool/HandlesOtherfunctionalThreadPool.java b/src/main/java/com/dreamchaser/depository_manage/security/pool/HandlesOtherfunctionalThreadPool.java new file mode 100644 index 00000000..d228f92b --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/security/pool/HandlesOtherfunctionalThreadPool.java @@ -0,0 +1,19 @@ +package com.dreamchaser.depository_manage.security.pool; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * 定义用于发送企业微信相关信息的线程池 + */ +public class HandlesOtherfunctionalThreadPool { + public static ExecutorService exs = new ThreadPoolExecutor(20, 10, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(10)); + + // 用于执行对应的方法 + public static void execute(Runnable runnable){ + exs.execute(runnable); + } + +} diff --git a/src/test/java/com/dreamchaser/depository_manage/OtherTest.java b/src/test/java/com/dreamchaser/depository_manage/OtherTest.java index edd46712..d6b161b7 100644 --- a/src/test/java/com/dreamchaser/depository_manage/OtherTest.java +++ b/src/test/java/com/dreamchaser/depository_manage/OtherTest.java @@ -1,5 +1,6 @@ package com.dreamchaser.depository_manage; +import com.alibaba.fastjson.JSONObject; import com.dreamchaser.depository_manage.config.PublicConfig; import com.dreamchaser.depository_manage.entity.UserByPort; import com.dreamchaser.depository_manage.security.pool.RedisPool; @@ -11,6 +12,7 @@ import com.dreamchaser.depository_manage.utils.LinkInterfaceUtil; import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; import com.dreamchaser.depository_manage.utils.WordUtil; import javafx.scene.control.TableRow; +import org.apache.poi.ss.formula.functions.T; import org.junit.Test; import org.junit.runner.RunWith; import org.redisson.api.RLock; @@ -22,6 +24,7 @@ import org.springframework.test.context.junit4.SpringRunner; import java.lang.reflect.Field; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; @@ -43,18 +46,25 @@ public class OtherTest { QyWxOperationService qyWxOperationService; @Autowired - static RedisPool redisPool; @Test public void main() { - UserByPort userByPort = LinkInterfaceUtil.FindUserById(6235, null); +// UserByPort userByPort = LinkInterfaceUtil.FindUserById(6235, null); // Map stringObjectMap = objectToMap(userByPort); // redisPool.getRedisTemplateByDb(5).opsForHash().putAll(PublicConfig.userInfoRedisPrefix+"300450",stringObjectMap); // System.out.println(stringObjectMap); -// Set keys = redisPool.getRedisTemplateByDb(5).opsForHash().keys(PublicConfig.userInfoRedisPrefix + "300450"); - + String key = PublicConfig.userInfoRedisPrefix + "300450"; + Iterator iterator = redisPool.getRedisTemplateByDb(5).opsForHash().keys(key).iterator(); + Map map = new HashMap<>(); + while (iterator.hasNext()) { + Object next = iterator.next(); + Object o = redisPool.getRedisTemplateByDb(5).opsForHash().get(key, next); + map.put((String) next,o); + } + UserByPort userByPort = JSONObject.parseObject(JSONObject.toJSONString(map), UserByPort.class); + System.out.println(userByPort); } @@ -81,13 +91,6 @@ public class OtherTest { } - public static T mapToBean(Map map, Class clazz) - throws IllegalAccessException, InstantiationException { - T bean = clazz.newInstance(); - BeanMap beanMap = BeanMap.create(bean); - beanMap.putAll(map); - return bean; - }