forked from I3-YF/i3plus-mes-pcn-yfai
jx pcn 下线补录来源于DB的采集数据
parent
367b48d0c5
commit
dd0ce48a6b
@ -0,0 +1,20 @@
|
||||
package cn.estsh.i3plus.ext.mes.pcn.api.job.jx;
|
||||
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: wangjie
|
||||
* @CreateDate: 2021/01/19 15:06 下午
|
||||
* @Description:
|
||||
**/
|
||||
public interface IJxRestoreProductDataService {
|
||||
|
||||
/**
|
||||
* 嘉兴补录检测数据定时任务
|
||||
* @param paramMap 参数
|
||||
*/
|
||||
@ApiOperation(value = "嘉兴补录检测数据定时任务", notes = "嘉兴补录检测数据定时任务")
|
||||
void doRestoreProductData(Map<String, Object> paramMap);
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
package cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob.jx;
|
||||
|
||||
import cn.estsh.i3plus.ext.mes.pcn.api.job.jx.IJxRestoreProductDataService;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.quartz.DisallowConcurrentExecution;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author wangjie
|
||||
* @version 1.0
|
||||
* @date 2021/2/2 16:44
|
||||
**/
|
||||
@Slf4j
|
||||
@DisallowConcurrentExecution
|
||||
@ApiOperation("嘉兴补录检测数据定时任务")
|
||||
public class JxRestoreProductDataJob implements Job {
|
||||
|
||||
@Autowired
|
||||
private IJxRestoreProductDataService restoreProductDataService;
|
||||
|
||||
@Override
|
||||
public void execute(JobExecutionContext jobExecutionContext) {
|
||||
|
||||
Object param = jobExecutionContext.getJobDetail().getJobDataMap().get(MesPcnExtConstWords.PARAM);
|
||||
if (StringUtils.isEmpty(param)) return;
|
||||
|
||||
log.info("RESTORE PRODUCT DATA JOB --- EXEC --- PARAM:{}", param.toString());
|
||||
|
||||
Map<String, Object> paramMap = JSONObject.parseObject(param.toString(), Map.class);
|
||||
|
||||
if (!paramMap.containsKey(MesPcnExtConstWords.ORGANIZE_CODE)) return;
|
||||
|
||||
log.info("工厂{} RESTORE PRODUCT DATA JOB --- EXEC -- START --- PARAM:{}", paramMap.get(MesPcnExtConstWords.ORGANIZE_CODE), param.toString());
|
||||
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
restoreProductDataService.doRestoreProductData(paramMap);
|
||||
|
||||
long endTime = System.currentTimeMillis();
|
||||
|
||||
log.info("工厂{} RESTORE PRODUCT DATA JOB --- EXEC --- END --- 耗时: {} ms", paramMap.get(MesPcnExtConstWords.ORGANIZE_CODE), endTime - startTime);
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.job.jx;
|
||||
|
||||
import cn.estsh.i3plus.ext.mes.pcn.api.job.jx.IJxRestoreProductDataService;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.SxWorkCellLineOffRecord;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.SxWorkCellLineOffRecordRepository;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
|
||||
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
||||
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
||||
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
||||
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesProductData;
|
||||
import cn.estsh.i3plus.pojo.mes.repository.MesProductDataRepository;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author: wangjie
|
||||
* @CreateDate: 2019/8/23 1:16 PM
|
||||
* @Description: 嘉兴补录检测数据定时任务
|
||||
**/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class JxRestoreProductDataService implements IJxRestoreProductDataService {
|
||||
|
||||
@Autowired
|
||||
private SxWorkCellLineOffRecordRepository workCellLineOffRecordRepository;
|
||||
|
||||
@Autowired
|
||||
private MesProductDataRepository productDataRepository;
|
||||
|
||||
@Override
|
||||
public void doRestoreProductData(Map<String, Object> paramMap) {
|
||||
|
||||
String organizeCode = (String) paramMap.get(MesPcnExtConstWords.ORGANIZE_CODE);
|
||||
|
||||
Integer limit = paramMap.containsKey(MesPcnExtConstWords.LIMIT) ? (Integer) paramMap.get(MesPcnExtConstWords.LIMIT) : 100;
|
||||
|
||||
Map<String, List<MesProductData>> productDataMap = findProductData(organizeCode, limit);
|
||||
|
||||
if (CollectionUtils.isEmpty(productDataMap)) return;
|
||||
|
||||
for (Map.Entry<String, List<MesProductData>> entry : productDataMap.entrySet()) {
|
||||
|
||||
if (null == entry) continue;
|
||||
|
||||
SxWorkCellLineOffRecord workCellLineOffRecord = getWorkCellLineOffRecord(organizeCode, entry.getKey());
|
||||
|
||||
Integer count = doRestoreProductData(entry.getValue(), workCellLineOffRecord);
|
||||
|
||||
log.info("工厂{} RESTORE PRODUCT DATA JOB --- EXEC --- PRODUCT SN:{} --- COMPLETED:[{}] --- UNCOMPLETE:[{}]", organizeCode, entry.getKey(), count, entry.getValue().size());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private Map<String, List<MesProductData>> findProductData(String organizeCode, Integer limit) {
|
||||
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
||||
DdlPreparedPack.getIsNull(MesPcnExtConstWords.ORDER_NO, packBean);
|
||||
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{MesPcnExtConstWords.SYSTEM_SYNC_STATUS}, packBean);
|
||||
List<MesProductData> productDataList = productDataRepository.findByHqlTopWhere(packBean, limit);
|
||||
|
||||
log.info("工厂{} RESTORE PRODUCT DATA JOB --- EXEC --- PRODUCT DATA SIZE:[{}]", organizeCode, CollectionUtils.isEmpty(productDataList) ? 0 : productDataList.size());
|
||||
|
||||
return CollectionUtils.isEmpty(productDataList) ? null :
|
||||
productDataList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesProductData::getProductSn));
|
||||
}
|
||||
|
||||
private SxWorkCellLineOffRecord getWorkCellLineOffRecord(String organizeCode, String productSn) {
|
||||
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
||||
DdlPreparedPack.getStringEqualPack(productSn, MesPcnExtConstWords.PRODUCT_SN, packBean);
|
||||
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesPcnExtConstWords.CREATE_DATE_TIME}, packBean);
|
||||
return workCellLineOffRecordRepository.getByProperty(packBean);
|
||||
}
|
||||
|
||||
private Integer doRestoreProductData(List<MesProductData> productDataList, SxWorkCellLineOffRecord workCellLineOffRecord) {
|
||||
Integer count = 0;
|
||||
if (null != workCellLineOffRecord) count = productDataList.size();
|
||||
for (MesProductData productData : productDataList) {
|
||||
if (null == productData) continue;
|
||||
if (count == 0) productData.setSystemSyncStatus(productData.getSystemSyncStatus() == 1 ? 3 : productData.getSystemSyncStatus() + 1);
|
||||
else {
|
||||
productData.setOrderNo(workCellLineOffRecord.getWorkOrderNo());
|
||||
productData.setPartNo(workCellLineOffRecord.getPartNo());
|
||||
productData.setPartDesc(workCellLineOffRecord.getPartNameRdd());
|
||||
productData.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
|
||||
ConvertBean.serviceModelUpdate(productData, MesPcnExtConstWords.JOB);
|
||||
}
|
||||
productDataRepository.save(productData);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue