Browse Source

修改系统内部线程创建方式

lwx_dev
erdanergou 3 years ago
parent
commit
a0fa51192d
  1. 52
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java
  2. 155
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java
  3. 12
      src/main/java/com/dreamchaser/depository_manage/controller/NoticeController.java
  4. 66
      src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java
  5. 19
      src/main/java/com/dreamchaser/depository_manage/security/pool/HandlesOtherfunctionalThreadPool.java
  6. 25
      src/test/java/com/dreamchaser/depository_manage/OtherTest.java

52
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<Integer> ids = (List<Integer>) 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<Integer> ids = (List<Integer>) 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);

155
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<String,Object> 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<Integer> ids=(List<Integer>) 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<Integer> ids=(List<Integer>) 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);
}

12
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);

66
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<String, Object> reviewByQyWx = stockTakingService.reviewByQyWx(templateCard, crypt);
if (reviewByQyWx.containsKey("errMsg")) {
HandlesOtherfunctionalThreadPool.execute(() -> {
Map<String, Object> 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("<xml><ToUserName><![CDATA[%s]]></ToUserName>" +
@ -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<ApprovalInfo_SpRecord> 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));
}
// 开启一个线程用于进行下步操作
}

19
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);
}
}

25
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<String, String> stringObjectMap = objectToMap(userByPort);
// redisPool.getRedisTemplateByDb(5).opsForHash().putAll(PublicConfig.userInfoRedisPrefix+"300450",stringObjectMap);
// System.out.println(stringObjectMap);
// Set<Object> keys = redisPool.getRedisTemplateByDb(5).opsForHash().keys(PublicConfig.userInfoRedisPrefix + "300450");
String key = PublicConfig.userInfoRedisPrefix + "300450";
Iterator<Object> iterator = redisPool.getRedisTemplateByDb(5).opsForHash().keys(key).iterator();
Map<String,Object> 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> 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;
}

Loading…
Cancel
Save