diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java index 646c3fa5..768b7b65 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java @@ -28,4 +28,7 @@ public interface RemoteQualityService { @PostMapping("/qcWarehousing/createProductTask") public R createProductTask(@RequestBody QcCheckTaskWarehousingDTO qcCheckTaskIncome); + + @PostMapping("/qcIncome/createIncomeBatchTask") + public R createIncomeBatchTask(); } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java index 0400c399..01e7bf34 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java @@ -37,6 +37,11 @@ public class RemoteQualityFallbackFactory implements FallbackFactory>> dateSources0 = remoteUserService.getPoolNameList(sysUser); + List> dateSources = dateSources0.getData(); + ExecutorService executorService = new ThreadPoolExecutor( + dateSources.size(), + dateSources.size(), + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue()); + 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 incomeBatchLists = qcCheckTaskIncomeService.getIncomeBatchList(poolName); + List 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() + "工厂添加失败:请检查物料的关联检测项" ); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskIncomeMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskIncomeMapper.java index dac1c52f..29eaf5fb 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskIncomeMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskIncomeMapper.java @@ -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 getCkeckTaskXJList(QcCheckTaskIncome qcCheckTaskIncome); + + //查询SRM来料记录表中,所有未插入的数据 + List getIncomeBatchList(); + + int updateIncomeBatchList(@Param("list") List batchRecordIds, @Param("time") Date taskTime); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java index 8adc4ece..afea8afd 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java @@ -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 getCkeckProjectXJList(QcCheckTaskIncome qcCheckTaskIncome); List getDefectListPDA(QcDefectType qcDefectType); + + List getIncomeBatchList(String poolName); + + int updateIncomeBatchList(List batchRecordIds , Date taskTime); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java index ad81540b..abbacf45 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java @@ -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 getIncomeBatchList(String poolName) { + DynamicDataSourceContextHolder.push(poolName);//这是数据源的key + return qcCheckTaskIncomeMapper.getIncomeBatchList(); + } + + @Override + public int updateIncomeBatchList(List batchRecordIds , Date taskTime){ + return qcCheckTaskIncomeMapper.updateIncomeBatchList(batchRecordIds ,taskTime); + } } diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml index 67ee786b..3e60a947 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml @@ -429,4 +429,26 @@ ) + + + + + + + + update qc_income_original + set + check_status = '1', + check_time = #{time} + where + record_id = #{item} + +