2024-3-7 质量模块、定时任务模块-来料检验批量创建检验任务-定时任务

master
A0010407 12 months ago
parent d249fd5b08
commit 4adc2b3fac

@ -28,4 +28,7 @@ public interface RemoteQualityService {
@PostMapping("/qcWarehousing/createProductTask")
public R createProductTask(@RequestBody QcCheckTaskWarehousingDTO qcCheckTaskIncome);
@PostMapping("/qcIncome/createIncomeBatchTask")
public R createIncomeBatchTask();
}

@ -37,6 +37,11 @@ public class RemoteQualityFallbackFactory implements FallbackFactory<RemoteQuali
public R createProductTask(QcCheckTaskWarehousingDTO qcCheckTaskWarehousingDTO) {
return R.fail("入库检验任务创建失败:" + throwable.getMessage());
}
@Override
public R createIncomeBatchTask() {
return R.fail("来料检验批量检验任务创建失败:" + throwable.getMessage());
}
};
}
}

@ -169,5 +169,13 @@ public class RyTask {
remoteUserService.syncUserInfoTask();
}
/************hr 人力基础数据定时任务结束*****************/
/************质量管理系统-来料检验批量检验任务创建-定时任务开始*****************/
//来料检验批量检验任务创建每10分钟执行一次
public void createIncomeBatchTask(){
logger.info("++质量管理系统+来料检验批量检验任务创建+开始++createIncomeBatchTask+++++");
remoteQualityService.createIncomeBatchTask();
}
/************质量管理系统-来料检验批量检验任务创建-定时任务结束*****************/
}

@ -3,22 +3,25 @@ package com.op.quality.controller;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.op.common.core.domain.R;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.bean.BeanUtils;
import com.op.common.security.utils.SecurityUtils;
import com.op.quality.domain.*;
import com.op.system.api.RemoteOpenService;
import com.op.system.api.RemoteUserService;
import com.op.system.api.domain.SysRole;
import com.op.system.api.domain.SysUser;
import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO;
@ -56,6 +59,9 @@ public class QcCheckTaskIncomeController extends BaseController {
@Autowired
private IQcCheckTaskIncomeService qcCheckTaskIncomeService;
@Autowired
private RemoteUserService remoteUserService;
/**
*
*/
@ -137,6 +143,71 @@ public class QcCheckTaskIncomeController extends BaseController {
return error("添加失败:请检查物料的关联检测项");
}
@PostMapping("/createIncomeBatchTask")
public AjaxResult createIncomeBatchTask() {
// 加载sf-cloud库的sys_datasource
SysUser sysUser = new SysUser();
sysUser.setUserId(1L);
R<List<Map<String, String>>> dateSources0 = remoteUserService.getPoolNameList(sysUser);
List<Map<String, String>> dateSources = dateSources0.getData();
ExecutorService executorService = new ThreadPoolExecutor(
dateSources.size(),
dateSources.size(),
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
try {
dateSources.forEach(dateSource -> {
Runnable run = () -> createIncomeBatchTaskFunc(dateSource.get("poolName"));
executorService.execute(run);
});
} catch (Exception e) {
logger.error("controller == createIncomeBatchTask == exception", e);
return error("controller == createIncomeBatchTask == exception");
} finally {
executorService.shutdown();
}
return success();
}
public AjaxResult createIncomeBatchTaskFunc(String poolName){
try {
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
Date taskTime = DateUtils.getNowDate();
logger.info("++++++++++++" + poolName + "工厂来料检验批量创建任务开始+++时间:"+ taskTime +"++++++++++");
List<QcCheckTaskIncome> incomeBatchLists = qcCheckTaskIncomeService.getIncomeBatchList(poolName);
List<String> batchRecordIds = new ArrayList<>();
int successNum = 0;//成功任务数
int failNum = 0;//失败任务数
if(incomeBatchLists != null){
for( int i = 0 ; i < incomeBatchLists.size();){
QcCheckTaskIncomeDTO qcCheckTaskIncomedto = new QcCheckTaskIncomeDTO();
QcCheckTaskIncome income = incomeBatchLists.get(i);
BeanUtils.copyProperties(income,qcCheckTaskIncomedto);
//内层一个一个创建任务
AjaxResult ajaxResult = createIncomeTask(qcCheckTaskIncomedto);
if(ajaxResult.isSuccess()){
batchRecordIds.add(qcCheckTaskIncomedto.getRecordId());
successNum = successNum + 1;
logger.info(poolName + "工厂的" + income.getCheckNo()+"来料检验创建任务成功++++++++++");
}else if(ajaxResult.isError()){
failNum = failNum +1;
logger.info(poolName + "工厂的" + income.getCheckNo()+"来料检验创建任务失败++++++++++");
}
i++;
}
}else{
logger.info("++++++++++++" + poolName + "工厂来料检验没有可创建的任务++++++++++");
}
//批量修改原表中的check_status和check_time
int upate = qcCheckTaskIncomeService.updateIncomeBatchList(batchRecordIds,taskTime);
logger.info("++++++++++++" + poolName + "工厂来料检验批量创建任务结束:成功"+ successNum +"失败"+ failNum +"+++++");
return success();
} catch (Exception e) {
logger.info("++++++++++++" + poolName + "工厂来料检验批量创建任务失败++++++++++");
return error("++++++++++++" + poolName + "工厂来料检验批量创建任务失败++++++++++");
}
}
@PostMapping("/createIncomeTask")
public AjaxResult createIncomeTask(@RequestBody QcCheckTaskIncomeDTO qcCheckTaskIncome0) {
QcCheckTaskIncome qcCheckTaskIncome = new QcCheckTaskIncome();
@ -166,14 +237,14 @@ public class QcCheckTaskIncomeController extends BaseController {
if (qcCheckTaskIncome.getIncomeTime() == null) {
return error("[incomeTime]不能为空");
}
logger.info("来料检验任务生成开始================================");
logger.info("来料检验任务生成参数:" + JSONObject.toJSONString(qcCheckTaskIncome));
logger.info(qcCheckTaskIncome0.getFactoryCode() + "工厂来料检验任务生成开始================================");
logger.info(qcCheckTaskIncome0.getFactoryCode() + "工厂来料检验任务生成参数:" + JSONObject.toJSONString(qcCheckTaskIncome));
int r = qcCheckTaskIncomeService.insertQcCheckTaskIncome(qcCheckTaskIncome);
if (r > 0) {
return toAjax(r);
}
return error("添加失败:请检查物料的关联检测项");
return error(qcCheckTaskIncome0.getFactoryCode() + "工厂添加失败:请检查物料的关联检测项" );
}

@ -1,5 +1,6 @@
package com.op.quality.mapper;
import java.util.Date;
import java.util.List;
import com.op.quality.domain.*;
@ -102,4 +103,9 @@ public interface QcCheckTaskIncomeMapper {
int deleteQcCheckTaskDefects(String belongId);
List<QcCheckTaskIncome> getCkeckTaskXJList(QcCheckTaskIncome qcCheckTaskIncome);
//查询SRM来料记录表中所有未插入的数据
List<QcCheckTaskIncome> getIncomeBatchList();
int updateIncomeBatchList(@Param("list") List<String> batchRecordIds, @Param("time") Date taskTime);
}

@ -1,5 +1,6 @@
package com.op.quality.service;
import java.util.Date;
import java.util.List;
import com.op.quality.domain.*;
@ -91,4 +92,8 @@ public interface IQcCheckTaskIncomeService {
List<QcCheckTaskIncome> getCkeckProjectXJList(QcCheckTaskIncome qcCheckTaskIncome);
List<QcDefectType> getDefectListPDA(QcDefectType qcDefectType);
List<QcCheckTaskIncome> getIncomeBatchList(String poolName);
int updateIncomeBatchList(List<String> batchRecordIds , Date taskTime);
}

@ -156,7 +156,10 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService {
/**qc_material_group_detail**/
//个性
QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(qcCheckTaskIncome.getMaterialCode());
if(group == null){
// if(group == null){
// return 0;//没有找到检测项目
// }
if(Objects.isNull(group)){
return 0;//没有找到检测项目
}
//共性
@ -708,4 +711,14 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService {
return n ;
}
@Override
public List<QcCheckTaskIncome> getIncomeBatchList(String poolName) {
DynamicDataSourceContextHolder.push(poolName);//这是数据源的key
return qcCheckTaskIncomeMapper.getIncomeBatchList();
}
@Override
public int updateIncomeBatchList(List<String> batchRecordIds , Date taskTime){
return qcCheckTaskIncomeMapper.updateIncomeBatchList(batchRecordIds ,taskTime);
}
}

@ -429,4 +429,26 @@
)
</foreach>
</insert>
<!--查询原始表-->
<select id="getIncomeBatchList" resultMap="QcCheckTaskIncomeResult">
select *
from qc_income_original
where del_flag = '0'
and check_type = 'checkTypeLL'
and order_type = 'bc'
and check_status = '0'
</select>
<!--批量更新原始表-->
<update id="updateIncomeBatchList">
<foreach collection="list" item="item" separator=";">
update qc_income_original
set
check_status = '1',
check_time = #{time}
where
record_id = #{item}
</foreach>
</update>
</mapper>

Loading…
Cancel
Save