|
|
|
@ -1,21 +1,35 @@
|
|
|
|
|
package com.op.quality.service.impl;
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.time.LocalTime;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
|
import java.util.concurrent.LinkedBlockingQueue;
|
|
|
|
|
import java.util.concurrent.ThreadPoolExecutor;
|
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
|
|
|
|
import ch.qos.logback.core.net.SyslogOutputStream;
|
|
|
|
|
import cn.hutool.core.date.DateUnit;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
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.StringUtils;
|
|
|
|
|
import com.op.common.core.utils.bean.BeanUtils;
|
|
|
|
|
import com.op.common.core.utils.uuid.IdUtils;
|
|
|
|
|
import com.op.common.core.web.domain.AjaxResult;
|
|
|
|
|
import com.op.common.security.utils.SecurityUtils;
|
|
|
|
|
import com.op.quality.domain.*;
|
|
|
|
|
import com.op.quality.mapper.*;
|
|
|
|
|
import com.op.quality.service.IQcCheckTaskDefectService;
|
|
|
|
|
import com.op.quality.service.IQcCheckTaskUserService;
|
|
|
|
|
import com.op.system.api.RemoteUserService;
|
|
|
|
|
import com.op.system.api.domain.SysUser;
|
|
|
|
|
import com.op.system.api.domain.mes.ProOrderWorkorderDTO;
|
|
|
|
|
import com.op.system.api.domain.quality.QcUserMaterialDTO;
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
@ -29,6 +43,9 @@ import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
|
|
|
|
|
import static com.op.common.core.web.domain.AjaxResult.error;
|
|
|
|
|
import static com.op.common.core.web.domain.AjaxResult.success;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 成品入库检验任务Service业务层处理
|
|
|
|
|
*
|
|
|
|
@ -58,7 +75,10 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin
|
|
|
|
|
private IQcCheckTaskDefectService qcCheckTaskDefectService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private QcSampleRuleMapper qcSampleRuleMapper;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private RemoteUserService remoteUserService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private QcCheckTaskProduceMapper qcCheckTaskProduceMapper;
|
|
|
|
|
/**
|
|
|
|
|
* 查询成品入库检验任务
|
|
|
|
|
*
|
|
|
|
@ -311,4 +331,60 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin
|
|
|
|
|
return qcCheckTaskWarehousingMapper.getQcListLoc(qcCheckTaskWarehousing);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**入库检验定时任务**/
|
|
|
|
|
@Override
|
|
|
|
|
public AjaxResult createCPBatchTask() {
|
|
|
|
|
|
|
|
|
|
// 加载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 -> {
|
|
|
|
|
if("ds_1000".equals(dateSource.get("poolName"))){
|
|
|
|
|
logger.info("++++++++++++" + dateSource.get("poolName") + "++++成品入库检验巡检开始++++++++++");
|
|
|
|
|
Runnable run = () -> createCPFunc(dateSource.get("poolName"));
|
|
|
|
|
executorService.execute(run);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
logger.error("service == createCPBatchTask == exception", e);
|
|
|
|
|
return error("service == createCPBatchTask == exception");
|
|
|
|
|
} finally {
|
|
|
|
|
executorService.shutdown();
|
|
|
|
|
}
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void createCPFunc(String poolName){
|
|
|
|
|
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
|
|
|
|
|
ProOrderWorkorderDTO qoWork = new ProOrderWorkorderDTO();
|
|
|
|
|
qoWork.setStatus("w3");
|
|
|
|
|
//报工的
|
|
|
|
|
List<QcCheckTaskProduce> w3works = qcCheckTaskProduceMapper.getOrderWorksW2(qoWork);
|
|
|
|
|
for(QcCheckTaskProduce productTask:w3works){
|
|
|
|
|
QcCheckTaskWarehousing cpTask = new QcCheckTaskWarehousing();
|
|
|
|
|
BeanUtils.copyProperties(productTask,cpTask);
|
|
|
|
|
|
|
|
|
|
productTask.setCheckType("checkTypeCP");//入库检验
|
|
|
|
|
productTask.setOrderNo(productTask.getWorkorderCode());
|
|
|
|
|
|
|
|
|
|
// //是否已经存在入库检验
|
|
|
|
|
// QcCheckTaskProduce cpTask0 = qcCheckTaskProduceMapper.getLastXJTask(productTask);
|
|
|
|
|
// if(cpTask0 == null){
|
|
|
|
|
// logger.info("++++++++++++入库检验任务生成:已经存在++++++++++++++");
|
|
|
|
|
// }else{
|
|
|
|
|
// int m = insertQcCheckTaskWarehousing(cpTask);
|
|
|
|
|
// logger.info("++++++++++++入库检验任务生成" + m + "++++++++++++++");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
logger.info("++++++++++++" + poolName + "++++入库检验巡检结束++++++++++");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|