产线调拨+预报工

master
zhaoxiaolin 9 months ago
parent f7bfe55f23
commit a823ac786a

@ -38,4 +38,7 @@ public interface RemoteQualityService {
@PostMapping("/qcIncome/removeDatasource") @PostMapping("/qcIncome/removeDatasource")
public R removeDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty); public R removeDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty);
@PostMapping("/qcWarehousing/createCPBatchTask")
public R createCPBatchTask();
} }

@ -52,6 +52,11 @@ public class RemoteQualityFallbackFactory implements FallbackFactory<RemoteQuali
public R removeDatasource(DataSourcePropertyDTO dataSourceProperty) { public R removeDatasource(DataSourcePropertyDTO dataSourceProperty) {
return R.fail("质量数据源移除失败:" + throwable.getMessage()); return R.fail("质量数据源移除失败:" + throwable.getMessage());
} }
@Override
public R createCPBatchTask() {
return R.fail("入库检验任务创建失败:" + throwable.getMessage());
}
}; };
} }
} }

@ -166,6 +166,12 @@ public class RyTask {
logger.info("++质量管理系统+来料检验任务创建+开始++createIncomeBatchTask+++++"); logger.info("++质量管理系统+来料检验任务创建+开始++createIncomeBatchTask+++++");
remoteQualityService.createIncomeBatchTask(); remoteQualityService.createIncomeBatchTask();
} }
//成品检验任务创建每3分钟执行一次
public void createCPBatchTask(){
logger.info("++质量管理系统+成品检验任务创建+开始++createCPBatchTask+++++");
remoteQualityService.createCPBatchTask();
}
/************质量管理系统定时任务结束*****************/ /************质量管理系统定时任务结束*****************/
/************hr 人力基础数据定时任务开始*****************/ /************hr 人力基础数据定时任务开始*****************/

@ -112,6 +112,15 @@ public class MesReportWorkConsume extends BaseEntity {
private String warehouseCode; private String warehouseCode;
private String warehouseName; private String warehouseName;
private String planQuantity; private String planQuantity;
private String machineCode;
public String getMachineCode() {
return machineCode;
}
public void setMachineCode(String machineCode) {
this.machineCode = machineCode;
}
public String getPlanQuantity() { public String getPlanQuantity() {
return planQuantity; return planQuantity;

@ -354,6 +354,7 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
mesReportWork.setUploadStatus("1");//除了1报工成功的都需要报工 mesReportWork.setUploadStatus("1");//除了1报工成功的都需要报工
mesReportWork.setProdType("prod"); mesReportWork.setProdType("prod");
mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode()); mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode());
mesReportWork.setMachineCode(mesReportWork.getMachineCode());
MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork); MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork);
if(sHzWorks==null){ if(sHzWorks==null){
return R.fail("未查询到一层报工单"); return R.fail("未查询到一层报工单");
@ -375,6 +376,7 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
mesReportWork.setUploadStatus("1");//除了1报工成功的都需要报工 mesReportWork.setUploadStatus("1");//除了1报工成功的都需要报工
mesReportWork.setProdType("prod"); mesReportWork.setProdType("prod");
mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode()); mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode());
mesReportWork.setMachineCode(mesReportWork.getMachineCode());
MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork); MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork);
if(sHzWorks==null){ if(sHzWorks==null){
return R.fail("未查询到子报工单"); return R.fail("未查询到子报工单");
@ -388,6 +390,7 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
if(sapRson.getCode()== 200){ if(sapRson.getCode()== 200){
//一定是子单报工成功返回后,再母单报工 //一定是子单报工成功返回后,再母单报工
mesReportWork.setWorkorderCode(workOrders.get(1).getWorkorderCode()); mesReportWork.setWorkorderCode(workOrders.get(1).getWorkorderCode());
mesReportWork.setMachineCode(mesReportWork.getMachineCode());
MesReportWork pHzWork = mesReportWorkMapper.getReportWorkHz(mesReportWork); MesReportWork pHzWork = mesReportWorkMapper.getReportWorkHz(mesReportWork);
if(pHzWork==null){ if(pHzWork==null){
return R.fail("未查询到母报工单"); return R.fail("未查询到母报工单");
@ -416,10 +419,10 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
BigDecimal gamng = null; BigDecimal gamng = null;
for(int n=0;n<workOrders.size();n++){ for(int n=0;n<workOrders.size();n++){
MesReportWork workOrder = workOrders.get(n); MesReportWork workOrder = workOrders.get(n);
mesReportWork.setUploadStatus("1");//除了1报工成功的都需要报工 mesReportWork.setUploadStatus("1");//除了1报工成功的都需要报工
mesReportWork.setProdType("prod"); mesReportWork.setProdType("prod");
mesReportWork.setWorkorderCode(workOrder.getWorkorderCode()); mesReportWork.setWorkorderCode(workOrder.getWorkorderCode());
mesReportWork.setMachineCode(mesReportWork.getMachineCode());
MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork); MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork);
if (sHzWorks == null) { if (sHzWorks == null) {
return R.fail(workOrder.getWorkorderCode()+"未查询到报工单"); return R.fail(workOrder.getWorkorderCode()+"未查询到报工单");

@ -124,6 +124,9 @@
and mpd.del_flag = '0' and mpd.del_flag = '0'
where mrwc.del_flag = '0' and pow.del_flag = '0' where mrwc.del_flag = '0' and pow.del_flag = '0'
and mrwc.workorder_code = #{workorderCode} and mrwc.workorder_code = #{workorderCode}
<if test="machineCode!=''">
and pow.workorder_name = #{machineCode}
</if>
order by mrwc.recoil,mrwc.attr1 order by mrwc.recoil,mrwc.attr1
</select> </select>
<select id="getSonConsumeList" resultType="com.op.mes.domain.MesReportWorkConsume"> <select id="getSonConsumeList" resultType="com.op.mes.domain.MesReportWorkConsume">

@ -573,6 +573,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test='parentOrder!="0"'> <if test='parentOrder!="0"'>
and mrw.parent_order = #{workorderCode} and mrw.parent_order = #{workorderCode}
</if> </if>
<if test='machineCode!=""'>
and mrw.machine_code = #{machineCode}
</if>
order by mrw.batch order by mrw.batch
</select> </select>
<select id="getPrepareList" resultType="com.op.mes.domain.MesPrepareDetail"> <select id="getPrepareList" resultType="com.op.mes.domain.MesPrepareDetail">
@ -614,7 +617,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from from
mes_report_work mes_report_work
where upload_status != #{uploadStatus} and prod_type = #{prodType} where upload_status != #{uploadStatus} and prod_type = #{prodType}
and workorder_code = #{workorderCode} and del_flag='0' and workorder_code = #{workorderCode} and del_flag='0'
<if test='machineCode!=""'>
and machine_code = #{machineCode}
</if>
group by workorder_code,product_code,product_name,remark group by workorder_code,product_code,product_name,remark
) mrw ) mrw
left join pro_order_workorder ow on mrw.workorder_code = ow.workorder_code left join pro_order_workorder ow on mrw.workorder_code = ow.workorder_code

@ -7,6 +7,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import com.op.common.core.domain.R;
import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.bean.BeanUtils; import com.op.common.core.utils.bean.BeanUtils;
import com.op.quality.domain.QcCheckTaskIncome; import com.op.quality.domain.QcCheckTaskIncome;
@ -154,4 +155,13 @@ public class QcCheckTaskWarehousingController extends BaseController {
List<QcCheckTaskWarehousing> list = qcCheckTaskWarehousingService.getQcListLoc(qcCheckTaskWarehousing); List<QcCheckTaskWarehousing> list = qcCheckTaskWarehousingService.getQcListLoc(qcCheckTaskWarehousing);
return getDataTable(list); return getDataTable(list);
} }
/**
*
**/
@PostMapping("/createCPBatchTask")
public R createCPBatchTask() {
qcCheckTaskWarehousingService.createCPBatchTask();
return R.ok();
}
} }

@ -176,6 +176,7 @@ public class QcCheckTaskWarehousing extends BaseEntity {
private BigDecimal aNoOkquality; private BigDecimal aNoOkquality;
private BigDecimal bNoOkquality; private BigDecimal bNoOkquality;
private BigDecimal cNoOkquality; private BigDecimal cNoOkquality;
private String workorderCode;
public BigDecimal getaNoOkquality() { public BigDecimal getaNoOkquality() {
return aNoOkquality; return aNoOkquality;

@ -86,4 +86,5 @@ public interface QcCheckTaskProduceMapper {
public List<QcCheckTaskProduce> getOrderWorksW2(ProOrderWorkorderDTO qoWork); public List<QcCheckTaskProduce> getOrderWorksW2(ProOrderWorkorderDTO qoWork);
public QcCheckTaskProduce getLastXJTask(QcCheckTaskProduce productTask); public QcCheckTaskProduce getLastXJTask(QcCheckTaskProduce productTask);
} }

@ -2,6 +2,7 @@ package com.op.quality.service;
import java.util.List; import java.util.List;
import com.op.common.core.web.domain.AjaxResult;
import com.op.quality.domain.QcCheckTaskWarehousing; import com.op.quality.domain.QcCheckTaskWarehousing;
import com.op.system.api.domain.quality.QcCheckTaskWarehousingDTO; import com.op.system.api.domain.quality.QcCheckTaskWarehousingDTO;
@ -61,4 +62,6 @@ public interface IQcCheckTaskWarehousingService {
public int deleteQcCheckTaskWarehousingByRecordId(String recordId); public int deleteQcCheckTaskWarehousingByRecordId(String recordId);
List<QcCheckTaskWarehousing> getQcListLoc(QcCheckTaskWarehousing qcCheckTaskWarehousing); List<QcCheckTaskWarehousing> getQcListLoc(QcCheckTaskWarehousing qcCheckTaskWarehousing);
AjaxResult createCPBatchTask();
} }

@ -1,21 +1,35 @@
package com.op.quality.service.impl; package com.op.quality.service.impl;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; 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 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.annotation.DS;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; 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.DateUtils;
import com.op.common.core.utils.StringUtils; 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.utils.uuid.IdUtils;
import com.op.common.core.web.domain.AjaxResult;
import com.op.common.security.utils.SecurityUtils; import com.op.common.security.utils.SecurityUtils;
import com.op.quality.domain.*; import com.op.quality.domain.*;
import com.op.quality.mapper.*; import com.op.quality.mapper.*;
import com.op.quality.service.IQcCheckTaskDefectService; import com.op.quality.service.IQcCheckTaskDefectService;
import com.op.quality.service.IQcCheckTaskUserService; 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 com.op.system.api.domain.quality.QcUserMaterialDTO;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -29,6 +43,9 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest; 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 * Service
* *
@ -58,7 +75,10 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin
private IQcCheckTaskDefectService qcCheckTaskDefectService; private IQcCheckTaskDefectService qcCheckTaskDefectService;
@Autowired @Autowired
private QcSampleRuleMapper qcSampleRuleMapper; private QcSampleRuleMapper qcSampleRuleMapper;
@Autowired
private RemoteUserService remoteUserService;
@Autowired
private QcCheckTaskProduceMapper qcCheckTaskProduceMapper;
/** /**
* *
* *
@ -311,4 +331,60 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin
return qcCheckTaskWarehousingMapper.getQcListLoc(qcCheckTaskWarehousing); 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 + "++++入库检验巡检结束++++++++++");
}
} }

@ -433,7 +433,7 @@
from pro_order_workorder pow from pro_order_workorder pow
left join base_equipment be on be.equipment_code = pow.workorder_name and be.equipment_type_code = 'equ_type_bzx' left join base_equipment be on be.equipment_code = pow.workorder_name and be.equipment_type_code = 'equ_type_bzx'
where pow.del_flag = '0' where pow.del_flag = '0'
and pow.status = 'w2' and pow.parent_order = '0' and pow.status = #{status} and pow.parent_order = '0'
<!--and (pow.product_date = CONVERT(varchar(10),GETDATE(), 120) <!--and (pow.product_date = CONVERT(varchar(10),GETDATE(), 120)
or pow.product_date = CONVERT(varchar(10),DATEADD(DAY, -1, GETDATE()), 120))--> or pow.product_date = CONVERT(varchar(10),DATEADD(DAY, -1, GETDATE()), 120))-->
</select> </select>

Loading…
Cancel
Save