package com.jcdm.main.da.paramCollection.service.impl;
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.db.Db;
|
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpResponse;
|
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.google.gson.Gson;
|
import com.jcdm.common.core.domain.AjaxResult;
|
import com.jcdm.common.utils.DateUtils;
|
import com.jcdm.common.utils.SecurityUtils;
|
import com.jcdm.common.utils.StringUtils;
|
import com.jcdm.framework.websocket.WebSocketUsers;
|
import com.jcdm.main.bs.formula.service.IBsFormulaInfoService;
|
import com.jcdm.main.bs.formula.service.impl.BsFormulaInfoServiceImpl;
|
import com.jcdm.main.bs.formulaChild.domain.BsFormulaChildInfo;
|
import com.jcdm.main.bs.formulaChild.mapper.BsFormulaChildInfoMapper;
|
import com.jcdm.main.bs.formulaChild.service.IBsFormulaChildInfoService;
|
import com.jcdm.main.constant.Constants;
|
import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf;
|
import com.jcdm.main.da.collectionParamConf.mapper.DaCollectionParamConfMapper;
|
import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService;
|
import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
|
import com.jcdm.main.da.paramCollection.mapper.DaParamCollectionMapper;
|
import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
|
import com.jcdm.main.da.paramCollectionTemp.domain.DaParamCollectionTemp;
|
import com.jcdm.main.da.paramCollectionTemp.service.IDaParamCollectionTempService;
|
import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
|
import com.jcdm.main.da.passingStationCollection.mapper.DaPassingStationCollectionMapper;
|
import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
|
import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo;
|
import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService;
|
import com.jcdm.main.plcserver.sub.OPCUaSubscription;
|
import com.jcdm.main.restful.factoryMes.service.RestfulService;
|
import com.jcdm.main.restful.qingYan.doman.ChildVO;
|
import com.jcdm.main.restful.qingYan.doman.ParentVO;
|
import com.kangaroohy.milo.model.ReadWriteEntity;
|
import com.kangaroohy.milo.service.MiloService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.ibatis.session.ExecutorType;
|
import org.apache.ibatis.session.SqlSession;
|
import org.apache.ibatis.session.SqlSessionFactory;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.security.core.parameters.P;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import javax.websocket.Session;
|
import java.text.SimpleDateFormat;
|
import java.time.Instant;
|
import java.util.*;
|
import java.util.concurrent.CompletableFuture;
|
import java.util.stream.Collectors;
|
|
/**
|
* 设备产品过程参数采集Service业务层处理
|
*
|
* @author yyt
|
* @date 2023-12-13
|
*/
|
@Slf4j
|
@Service
|
public class DaParamCollectionServiceImpl extends ServiceImpl<DaParamCollectionMapper,DaParamCollection> implements IDaParamCollectionService
|
{
|
private static final Logger logger = LoggerFactory.getLogger("sys-user");
|
|
@Autowired
|
private DaParamCollectionMapper daParamCollectionMapper;
|
|
@Autowired
|
private DaCollectionParamConfMapper daCollectionParamConfMapper;
|
|
@Autowired
|
private BsFormulaChildInfoMapper bsFormulaChildInfoMapper;
|
|
@Autowired
|
private IBsFormulaChildInfoService bsFormulaChildInfoService;
|
|
@Autowired
|
private MiloService miloService;
|
|
@Autowired
|
private DaPassingStationCollectionMapper daPassingStationCollectionMapper;
|
|
@Resource
|
private SqlSessionFactory sqlSessionFactory;
|
|
@Autowired
|
private IDaParamCollectionService daParamCollectionService;
|
|
@Autowired
|
private IDaCollectionParamConfService daCollectionParamConfService;
|
|
@Autowired
|
private IDaParamCollectionTempService daParamCollectionTempService;
|
|
@Autowired
|
private IOmProductionOrdeInfoService omProductionOrdeInfoService;
|
|
@Autowired
|
private IDaPassingStationCollectionService daPassingStationCollectionService;
|
|
public SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
Map<String, Session> map = WebSocketUsers.getUsers();
|
|
|
/**
|
* 查询设备产品过程参数采集
|
*
|
* @param id 设备产品过程参数采集主键
|
* @return 设备产品过程参数采集
|
*/
|
@Override
|
public DaParamCollection selectDaParamCollectionById(Long id)
|
{
|
return daParamCollectionMapper.selectDaParamCollectionById(id);
|
}
|
|
/**
|
* 查询设备产品过程参数采集列表
|
*
|
* @param daParamCollection 设备产品过程参数采集
|
* @return 设备产品过程参数采集
|
*/
|
@Override
|
public List<DaParamCollection> selectDaParamCollectionList(DaParamCollection daParamCollection)
|
{
|
return daParamCollectionMapper.selectDaParamCollectionList(daParamCollection);
|
}
|
|
@Override
|
public void saveBeachDaParamCollection(List<DaParamCollection> list) {
|
// ExecutorType.SIMPLE: 这个执行器类型不做特殊的事情。它为每个语句的执行创建一个新的预处理语句。
|
// ExecutorType.REUSE: 这个执行器类型会复用预处理语句。
|
// ExecutorType.BATCH: 这个执行器会批量执行所有更新语句,如果 SELECT 在它们中间执行还会标定它们是 必须的,来保证一个简单并易于理解的行为。
|
logger.info("进入乐工批量方法saveBeachDaParamCollection");
|
|
// 关闭session的自动提交
|
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
|
try {
|
DaParamCollectionMapper userMapper = sqlSession.getMapper(DaParamCollectionMapper.class);
|
list.stream().forEach(DaParamCollection -> userMapper.insertDaParamCollection(DaParamCollection));
|
// 提交数据
|
sqlSession.commit();
|
sqlSession.rollback();
|
logger.info("结束乐工批量方法saveBeachDaParamCollection");
|
|
} catch (Exception e) {
|
sqlSession.rollback();
|
} finally {
|
sqlSession.close();
|
}
|
}
|
|
/**
|
* 新增设备产品过程参数采集
|
*
|
* @param daParamCollection 设备产品过程参数采集
|
* @return 结果
|
*/
|
@Override
|
public int insertDaParamCollection(DaParamCollection daParamCollection)
|
{
|
daParamCollection.setCreateTime(DateUtils.getNowDate());
|
return daParamCollectionMapper.insertDaParamCollection(daParamCollection);
|
}
|
|
/**
|
* 修改设备产品过程参数采集
|
*
|
* @param daParamCollection 设备产品过程参数采集
|
* @return 结果
|
*/
|
@Override
|
public int updateDaParamCollection(DaParamCollection daParamCollection)
|
{
|
daParamCollection.setUpdateTime(DateUtils.getNowDate());
|
return daParamCollectionMapper.updateDaParamCollection(daParamCollection);
|
}
|
|
/**
|
* 批量删除设备产品过程参数采集
|
*
|
* @param ids 需要删除的设备产品过程参数采集主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteDaParamCollectionByIds(Long[] ids)
|
{
|
return daParamCollectionMapper.deleteDaParamCollectionByIds(ids);
|
}
|
|
/**
|
* 删除设备产品过程参数采集信息
|
*
|
* @param id 设备产品过程参数采集主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteDaParamCollectionById(Long id)
|
{
|
return daParamCollectionMapper.deleteDaParamCollectionById(id);
|
}
|
|
@Override
|
public void addBasicParameters(DaParamCollection daParamCollection) {
|
// 假设这是从数据库或其他地方获取的参数数据
|
Map<String, String> map = new HashMap<>();
|
map.put("GC", "南浔工厂");
|
map.put("CXBH", "Pack线");
|
map.put("SBBH", "设备001");
|
map.put("YGBH", "员工001");
|
map.put("GDBH", daParamCollection.getWorkOrderNo());
|
map.put("CPXH", daParamCollection.getModel());
|
map.put("INT", DateUtil.formatDateTime(new Date()));
|
|
map.forEach((key, value) -> {
|
DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
|
daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode());
|
daCollectionParamConf.setCollectParameterId(key);
|
List<DaCollectionParamConf> daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf);
|
DaParamCollection saveData = new DaParamCollection();
|
saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo());
|
saveData.setProductCode(daParamCollection.getProductCode());
|
saveData.setLocationCode(daParamCollection.getLocationCode());
|
saveData.setSfcCode(daParamCollection.getProductBarcode());
|
saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId());
|
saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName());
|
saveData.setCollectionTime(new Date());
|
saveData.setParamValue(value);
|
daParamCollectionMapper.insertDaParamCollection(saveData);
|
});
|
}
|
|
@Override
|
public void addTighteningParameters(DaParamCollection daParamCollection) {
|
String paramCode = daParamCollection.getParamCode();
|
String tightenData = daParamCollection.getTightenTheArray();
|
if(StringUtils.isNotBlank(paramCode)&&StringUtils.isNotBlank(tightenData)){
|
tightenData = tightenData.replace("[", "").replace("]", "").replace(" ", "");
|
String[] tightenDataParts = tightenData.split(",");
|
String[] paramCodeParts = paramCode.split(",");
|
for (int i = 0; i < paramCodeParts.length; i++) {
|
daParamCollection.setParamValue(tightenDataParts[i]);
|
daParamCollection.setParamCode(paramCodeParts[i]);
|
daParamCollection.setCollectionTime(new Date());
|
daParamCollection.setSfcCode(daParamCollection.getProductBarcode());
|
daParamCollectionMapper.insertDaParamCollection(daParamCollection);
|
|
DaParamCollectionTemp daParamCollectionTemp = new DaParamCollectionTemp();
|
daParamCollectionTemp.setParamValue(tightenDataParts[i]);
|
daParamCollectionTemp.setParamCode(paramCodeParts[i]);
|
daParamCollectionTemp.setCollectionTime(new Date());
|
daParamCollectionTemp.setSfcCode(daParamCollection.getProductBarcode());
|
daParamCollectionTemp.setLocationCode(daParamCollection.getLocationCode());
|
daParamCollectionTemp.setProductCode(daParamCollection.getProductCode());
|
daParamCollectionTemp.setWorkOrderNo(daParamCollection.getWorkOrderNo());
|
daParamCollectionTempService.save(daParamCollectionTemp);
|
}
|
}
|
}
|
|
@Override
|
public void saveCampaignTimeParameters(DaParamCollection daParamCollection) {
|
// List<BsFormulaChildInfo> list = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>()
|
// .eq(BsFormulaChildInfo::getProcessesCode, daParamCollection.getLocationCode())
|
// .eq(BsFormulaChildInfo::getSpareField4, "1")
|
// );
|
BsFormulaChildInfo childInfo = daParamCollection.getFormulaChildEntity();
|
if(StringUtils.isNotBlank(childInfo.getResults())){
|
if(!childInfo.getResults().equals("OK")){
|
try {
|
miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+daParamCollection.getLocationCode()+".RecordDataDone").value(22).build());
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
return;
|
}
|
}else {
|
try {
|
miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+daParamCollection.getLocationCode()+".RecordDataDone").value(22).build());
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
return;
|
}
|
// BsFormulaChildInfo bsFormulaChildInfo = new BsFormulaChildInfo();
|
// bsFormulaChildInfo.setProcessesCode(daParamCollection.getLocationCode());
|
// bsFormulaChildInfo.setProductCode(daParamCollection.getProductCode());
|
// bsFormulaChildInfo.setSpareField4("1");
|
// List<BsFormulaChildInfo> bsFormulaChildInfos = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(bsFormulaChildInfo);
|
String result = childInfo.getResults();
|
if(result != null && !result.isEmpty()){
|
try {
|
// //更新参数采集配置表
|
// DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
|
// daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode());
|
// daCollectionParamConf.setCollectParameterId("OUTT");
|
// List<DaCollectionParamConf> daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf);
|
// DaParamCollection saveData = new DaParamCollection();
|
// saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo());
|
// saveData.setProductCode(daParamCollection.getProductCode());
|
// saveData.setLocationCode(daParamCollection.getLocationCode());
|
// saveData.setSfcCode(daParamCollection.getProductBarcode());
|
// saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId());
|
// saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName());
|
// saveData.setCollectionTime(new Date());
|
// saveData.setParamValue(DateUtil.formatDateTime(new Date()));
|
// daParamCollectionMapper.insertDaParamCollection(saveData);
|
|
//增加过站记录
|
DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection();
|
daPassingStationCollection.setWorkOrderNo(daParamCollection.getWorkOrderNo());
|
daPassingStationCollection.setSfcCode(daParamCollection.getProductBarcode());
|
daPassingStationCollection.setProductCode(daParamCollection.getProductCode());
|
daPassingStationCollection.setLocationCode(daParamCollection.getLocationCode());
|
daPassingStationCollection.setInboundTime(daParamCollection.getInboundTime());
|
daPassingStationCollection.setOutboundTime(new Date());
|
daPassingStationCollection.setCreateTime(new Date());
|
daPassingStationCollection.setOutRsSign("1");
|
boolean save = daPassingStationCollectionService.save(daPassingStationCollection);
|
|
//添加基础参数
|
this.manualWorkstationsAddBasicParameters(daParamCollection);
|
|
// //更新过站记录表出站时间
|
// DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection();
|
// daPassingStationCollection.setWorkOrderNo(daParamCollection.getWorkOrderNo());
|
// daPassingStationCollection.setLocationCode(daParamCollection.getLocationCode());
|
// List<DaPassingStationCollection> daPassingStationCollections = daPassingStationCollectionMapper.selectDaPassingStationCollectionList(daPassingStationCollection);
|
// daPassingStationCollections.get(0).setOutboundTime(new Date());
|
// int i = daPassingStationCollectionMapper.updateDaPassingStationCollection(daPassingStationCollections.get(0));
|
|
// OPCUaSubscription.SaveParamData(daParamCollection.getProductBarcode(),"OP",daParamCollection.getLocationCode(),daParamCollection.getWorkOrderNo(),daParamCollection.getProductCode());
|
|
//给opc发21
|
miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+daParamCollection.getLocationCode()+".RecordDataDone").value(21).build());
|
if(daParamCollection.getLocationCode().equals("POP240")){
|
try{
|
CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
|
logger.info("OP230报工开始-工厂MES异步方法");
|
String reportResult = RestfulService.getWorkReportResultFeedback(daParamCollection.getProductBarcode(), "POP230", format.format(new Date()));
|
JSONObject jsonObject = new JSONObject(reportResult);
|
String code = jsonObject.getStr("code");
|
if("success".equals(code)){
|
//如果成功,执行报工成功方法,修改是否报工为1,添加报工时间
|
omProductionOrdeInfoService.updateOrderByProductNum("1",daParamCollection.getProductBarcode(),"POP230");
|
}else{
|
//解析工厂mes返回结果,如果失败,执行报工失败方法,修改是否报工为2,添加报工时间
|
omProductionOrdeInfoService.updateOrderByProductNum("2",daParamCollection.getProductBarcode(),"POP230");
|
}
|
logger.info("OP230报工结束-工厂MES异步方法{}"+reportResult);
|
});
|
}catch (Exception e){
|
System.out.println(e.getMessage());
|
}
|
// RestfulService.getWorkReportResultFeedback(daParamCollection.getProductBarcode(),"OP230",format.format(new Date()));
|
}
|
if(daParamCollection.getLocationCode().equals("POP430")){
|
this.enterWeighing(daParamCollection);
|
}
|
|
|
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
}
|
}
|
|
@Override
|
public void insertBatch(List<DaParamCollection> confList){
|
try{
|
this.saveBatch(confList);
|
}catch (Exception e){
|
return;
|
}
|
|
}
|
|
@Override
|
public void replaceAssemblyCode(DaParamCollection daParamCollection) {
|
List<DaParamCollection> list = daParamCollectionService.list(new LambdaQueryWrapper<DaParamCollection>()
|
.eq(DaParamCollection::getSfcCode, daParamCollection.getYzSfcCode())
|
);
|
if(list.size() > 0){
|
for (DaParamCollection paramCollection : list) {
|
paramCollection.setSfcCode(daParamCollection.getSfcCode());
|
daParamCollectionService.saveOrUpdate(paramCollection);
|
}
|
}
|
|
}
|
|
@Override
|
public void yzAddBasicParameters(DaParamCollection daParamCollection) {
|
// 假设这是从数据库或其他地方获取的参数数据
|
Map<String, String> map = new HashMap<>();
|
// map.put("GC", "南浔工厂");
|
// map.put("CXBH", "Pack线");
|
// map.put("SBBH", "设备001");
|
// map.put("YGBH", "员工001");
|
// map.put("GDBH", daParamCollection.getWorkOrderNo());
|
// map.put("CPXH", daParamCollection.getModel());
|
map.put("INT", DateUtil.formatDateTime(new Date()));
|
|
map.forEach((key, value) -> {
|
DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
|
daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode());
|
daCollectionParamConf.setCollectParameterId(key);
|
List<DaCollectionParamConf> daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf);
|
DaParamCollection saveData = new DaParamCollection();
|
saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo());
|
saveData.setProductCode(daParamCollection.getProductCode());
|
saveData.setLocationCode(daParamCollection.getLocationCode());
|
saveData.setSfcCode(daParamCollection.getProductBarcode());
|
saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId());
|
saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName());
|
saveData.setCollectionTime(new Date());
|
saveData.setParamValue(value);
|
daParamCollectionMapper.insertDaParamCollection(saveData);
|
});
|
}
|
|
@Override
|
public void jrmSaveCampaignTimeParameters(DaParamCollection daParamCollection) {
|
//增加过站记录
|
DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection();
|
daPassingStationCollection.setWorkOrderNo(daParamCollection.getWorkOrderNo());
|
daPassingStationCollection.setSfcCode(daParamCollection.getProductBarcode());
|
daPassingStationCollection.setProductCode(daParamCollection.getProductCode());
|
daPassingStationCollection.setLocationCode(daParamCollection.getLocationCode());
|
daPassingStationCollection.setInboundTime(daParamCollection.getInboundTime());
|
daPassingStationCollection.setOutboundTime(new Date());
|
daPassingStationCollection.setCreateTime(new Date());
|
daPassingStationCollection.setOutRsSign("1");
|
boolean save = daPassingStationCollectionService.save(daPassingStationCollection);
|
|
//添加基础参数
|
this.manualWorkstationsAddBasicParameters(daParamCollection);
|
|
//给opc发21
|
try {
|
// miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+daParamCollection.getLocationCode()+".RecordDataDone").value(21).build());
|
String str = daParamCollection.getLocationCode();
|
miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+str+".RecordDataDone").value(21).build());
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
}
|
|
|
public void sendToFactoryMes(String stationCode,String productNum ){
|
// String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
|
String url = "https://imes-group.geelycv.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
|
ParentVO vo =new ParentVO();
|
List<ChildVO> checkList = new ArrayList<>();
|
List<DaParamCollection> list = this.list(new LambdaQueryWrapper<DaParamCollection>()
|
.eq(DaParamCollection::getSfcCode, productNum)
|
.eq(DaParamCollection::getLocationCode, stationCode));
|
vo.setTotalResult("1");
|
String string = new Random(10).toString();
|
vo.setRecordId(string);
|
vo.setProductNum(productNum);
|
vo.setSiteCode("3983");
|
vo.setStationCode(stationCode);
|
if (CollUtil.isNotEmpty(list)){
|
List<DaParamCollection> collect = list.stream().filter(x -> Constants.NG.equals(x.getParamValue())).collect(Collectors.toList());
|
if (CollUtil.isNotEmpty(collect)){
|
vo.setTotalResult("0");
|
}
|
List<BsFormulaChildInfo> bsFormulaChildInfoList = bsFormulaChildInfoService.list();
|
for (DaParamCollection daParamCollection : list) {
|
ChildVO childVO = new ChildVO();
|
childVO.setItemCode(daParamCollection.getParamCode());
|
String time = daParamCollection.getCollectionTime() != null ? daParamCollection.getCollectionTime().toString() : "";
|
childVO.setCheckResult("1");
|
if (StrUtil.isNotBlank(daParamCollection.getParamValue())){
|
if (Constants.NG.equals(daParamCollection.getParamValue())){
|
childVO.setCheckResult("0");
|
}
|
}
|
childVO.setCheckTime(time);
|
childVO.setItemValue(daParamCollection.getParamValue());
|
childVO.setItemType("3");
|
childVO.setItemText(daParamCollection.getParamName());
|
if (StrUtil.isNotBlank(daParamCollection.getParamCode())){
|
List<BsFormulaChildInfo> collect1 = bsFormulaChildInfoList.stream().filter(x -> daParamCollection.getParamCode().equals(x.getParamCode())).collect(Collectors.toList());
|
if (CollUtil.isNotEmpty(collect1)){
|
BsFormulaChildInfo bsFormulaChildInfo = collect1.get(0);
|
childVO.setItemType(bsFormulaChildInfo.getOperationType());
|
}
|
}
|
|
checkList.add(childVO);
|
}
|
}
|
vo.setCheckList(checkList);
|
HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(vo)).execute();
|
|
}
|
|
@Override
|
public void pushGeelycvMesFeedback(String packID, String stationCode) {
|
logger.info("进入人工工位推送工厂MES数据方法-pushGeelycvMesFeedback-工位{}-pack码{}",stationCode,packID);
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
// String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
|
String url = "https://imes-group.geelycv.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
|
String totalResult = "0";
|
List<DaParamCollectionTemp> paramList = daParamCollectionTempService.list(new LambdaQueryWrapper<DaParamCollectionTemp>().eq(DaParamCollectionTemp::getSfcCode, packID).eq(DaParamCollectionTemp::getLocationCode, stationCode));
|
if(paramList.size() > 0){
|
ParentVO parentVO = new ParentVO();
|
parentVO.setSiteCode("3983");
|
parentVO.setRecordId(String.valueOf(Instant.now().toEpochMilli()));
|
parentVO.setStationCode(stationCode);
|
parentVO.setProductNum(packID);
|
parentVO.setTotalResult("1");
|
List<ChildVO> listChildVo = new ArrayList<>();
|
|
for (DaParamCollectionTemp daParamCollection : paramList) {
|
ChildVO childVO = new ChildVO();
|
childVO.setItemCode(daParamCollection.getParamCode());
|
List<DaCollectionParamConf> paramConfOneList = daCollectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>()
|
.eq(DaCollectionParamConf::getCollectParameterId, daParamCollection.getParamCode())
|
.eq(DaCollectionParamConf::getProductModel, "PE01B")
|
);
|
DaCollectionParamConf paramConfOne = paramConfOneList.get(0);
|
if(paramConfOne!=null){
|
childVO.setItemType(paramConfOne.getSpareField1());
|
childVO.setItemText(paramConfOne.getCollectParameterName());
|
}else {
|
childVO.setItemType("3");
|
childVO.setItemText("");
|
}
|
childVO.setItemValue(daParamCollection.getParamValue());
|
|
if(daParamCollection.getParamValue().equals("1")){
|
childVO.setCheckResult("1");
|
}else if(daParamCollection.getParamValue().equals("2")){
|
childVO.setCheckResult("0");
|
parentVO.setTotalResult("0");
|
totalResult = "1";
|
}else {
|
childVO.setCheckResult("1");
|
}
|
childVO.setCheckTime(format.format(daParamCollection.getCollectionTime()));
|
listChildVo.add(childVO);
|
|
}
|
parentVO.setCheckList(listChildVo);
|
try{
|
CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
|
logger.info("工位{}---开始执行异步方法---pack码是{}"+stationCode,packID);
|
HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
|
logger.info("工位{}---异步方法执行结束---pack码是{}"+stationCode,packID);
|
logger.info("手动工位{}传工厂入参VO{}---pack码是{}" + stationCode,new Gson().toJson(parentVO),packID);
|
logger.info("手动工位{}传工厂MES异步方法{}---pack码是{}"+stationCode,execute.body(),packID);
|
|
DaParamCollectionTemp daParamCollectionTemp = new DaParamCollectionTemp();
|
daParamCollectionTemp.setSfcCode(packID);
|
daParamCollectionTemp.setLocationCode(stationCode);
|
int i = daParamCollectionTempService.deleteDaParamCollectionTempBySfcCodeAndLocationCode(daParamCollectionTemp);
|
logger.info("删除临时表数据条数{}-工位{}-pack码{}",i,stationCode,packID);
|
});
|
}catch (Exception e){
|
System.out.println(e.getMessage());
|
}
|
logger.info("结束人工工位推送工厂MES数据方法-pushGeelycvMesFeedback-工位{}-pack码{}",stationCode,packID);
|
}
|
|
}
|
|
@Override
|
public void automaticWorkstationPushGeelycvMesFeedback(String packID, String stationCode,List<DaParamCollection> paramList) {
|
logger.info("进入工位{}-工厂MES推送数据方法automaticWorkstationPushGeelycvMesFeedback",stationCode);
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
// String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
|
String url = "https://imes-group.geelycv.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
|
String totalResult = "0";
|
if(paramList.size() > 0){
|
logger.info("进入工位{}-拼数据",stationCode);
|
ParentVO parentVO = new ParentVO();
|
parentVO.setSiteCode("3983");
|
parentVO.setRecordId(String.valueOf(Instant.now().toEpochMilli()));
|
parentVO.setStationCode(stationCode);
|
parentVO.setProductNum(packID);
|
parentVO.setTotalResult("1");
|
List<ChildVO> listChildVo = new ArrayList<>();
|
|
for (DaParamCollection daParamCollection : paramList) {
|
ChildVO childVO = new ChildVO();
|
childVO.setItemCode(daParamCollection.getParamCode());
|
// BsFormulaChildInfo childOne = bsFormulaChildInfoService.getOne(new LambdaQueryWrapper<BsFormulaChildInfo>().eq(BsFormulaChildInfo::getParamCode, daParamCollection.getParamCode()));
|
// DaCollectionParamConf paramConfOne = daCollectionParamConfService.getOne(new LambdaQueryWrapper<DaCollectionParamConf>().eq(DaCollectionParamConf::getCollectParameterId, daParamCollection.getParamCode()));
|
List<DaCollectionParamConf> paramConfOneList = daCollectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>()
|
.eq(DaCollectionParamConf::getCollectParameterId, daParamCollection.getParamCode())
|
.eq(DaCollectionParamConf::getProductModel, "PE01B")
|
);
|
DaCollectionParamConf paramConfOne = paramConfOneList.get(0);
|
if(paramConfOne!=null){
|
childVO.setItemType(paramConfOne.getSpareField1());
|
childVO.setItemText(paramConfOne.getCollectParameterName());
|
}else {
|
childVO.setItemType("3");
|
childVO.setItemText("");
|
}
|
childVO.setItemValue(daParamCollection.getParamValue());
|
|
if(daParamCollection.getParamValue().equals("1")){
|
childVO.setCheckResult("1");
|
}else if(daParamCollection.getParamValue().equals("2")){
|
childVO.setCheckResult("0");
|
parentVO.setTotalResult("0");
|
totalResult = "1";
|
}else {
|
childVO.setCheckResult("1");
|
}
|
childVO.setCheckTime(format.format(daParamCollection.getCollectionTime()));
|
listChildVo.add(childVO);
|
}
|
parentVO.setCheckList(listChildVo);
|
logger.info("结束工位{}-拼数据",stationCode);
|
logger.info("进入工位{}-工厂MES推送数据方法HttpResponseSend",stationCode);
|
try{
|
CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
|
logger.info("工位{}---自动工位开始执行异步方法---pack码是{}"+stationCode,packID);
|
HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
|
logger.info("工位{}---自动工位异步方法执行结束---pack码是{}"+stationCode,packID);
|
logger.info("自动工位{}传工厂入参VO{}" + stationCode,new Gson().toJson(parentVO));
|
logger.info("自动工位{}传工厂MES异步方法返回{}"+stationCode,execute.body());
|
});
|
}catch (Exception e){
|
System.out.println(e.getMessage());
|
}
|
// HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
|
logger.info("结束工位{}-工厂MES推送数据方法HttpResponseSend",stationCode);
|
}
|
logger.info("结束工位{}-工厂MES推送数据方法automaticWorkstationPushGeelycvMesFeedback",stationCode);
|
}
|
|
@Override
|
public AjaxResult checkRecordDataDone(DaParamCollection daParamCollection) {
|
String result = "";
|
|
|
try {
|
List<BsFormulaChildInfo> list = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>().eq(BsFormulaChildInfo::getSpareField4, "1").eq(BsFormulaChildInfo::getProcessesCode, daParamCollection.getLocationCode()));
|
if(list.size()>0){
|
String results = list.get(0).getResults();
|
if(results!= null && !results.equals("") && results.equals("OK")){
|
result = "21";
|
}
|
}
|
/*Object recordDataDone = miloService.readFromOpcUa("PACK" + "." + daParamCollection.getLocationCode() + ".RecordDataDone").getValue();
|
if(ObjectUtil.isNotNull(recordDataDone)){
|
result = recordDataDone.toString();
|
}*/
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
return AjaxResult.success(result);
|
}
|
|
@Override
|
public void enterWeighing(DaParamCollection daParamCollection) {
|
String url = "https://imes-group.geelycv.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
|
// String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
|
try{
|
daParamCollection.setWeightValue(getRandomNumberBetween(312.5, 313.5));
|
Object recordDataDone = miloService.readFromOpcUa("PACK" + "." + daParamCollection.getLocationCode() + ".weight").getValue();
|
if(ObjectUtil.isNotNull(recordDataDone)){
|
daParamCollection.setWeightValue(recordDataDone.toString());
|
}
|
long timestampMillis = Instant.now().toEpochMilli();
|
ParentVO parentVO = new ParentVO();
|
ChildVO childVO = new ChildVO();
|
List<ChildVO> childVOList = new ArrayList<>();
|
childVO.setItemCode("PWD_PW");
|
childVO.setItemType("3");
|
childVO.setItemText("Pack重量值");
|
childVO.setItemValue(daParamCollection.getWeightValue());
|
childVO.setCheckTime(format.format(new Date()));
|
childVO.setCheckResult("1");
|
childVOList.add(childVO);
|
parentVO.setSiteCode("3983");
|
parentVO.setRecordId(""+timestampMillis);
|
parentVO.setStationCode("POP430");
|
parentVO.setProductNum(daParamCollection.getProductBarcode());
|
parentVO.setTotalResult("1");
|
parentVO.setCheckList(childVOList);
|
CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
|
logger.info("POP430报工开始-工厂MES异步方法");
|
HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
|
logger.info("称重430返回结果"+execute.body());
|
String reportResult = RestfulService.getWorkReportResultFeedback(daParamCollection.getProductBarcode(), "POP430", format.format(new Date()));
|
JSONObject jsonObject = new JSONObject(reportResult);
|
String code = jsonObject.getStr("code");
|
String resultCode = jsonObject.getJSONObject("data").getStr("resultCode");
|
if("success".equals(code)&&"S".equals(resultCode)){
|
//如果成功,执行报工成功方法,修改是否报工为1,添加报工时间
|
WebSocketUsers.sendMessageToUserByText(map.get("POP430"), "reportSuccess");
|
omProductionOrdeInfoService.updateOrderByProductNum("1",daParamCollection.getProductBarcode(),"POP430");
|
}else{
|
WebSocketUsers.sendMessageToUserByText(map.get("POP430"), "reportError");
|
//解析工厂mes返回结果,如果失败,执行报工失败方法,修改是否报工为2,添加报工时间
|
omProductionOrdeInfoService.updateOrderByProductNum("2",daParamCollection.getProductBarcode(),"POP430");
|
}
|
logger.info("OP430报工结束-工厂MES异步方法{}"+reportResult);
|
});
|
}catch (Exception e){
|
WebSocketUsers.sendMessageToUserByText(map.get("POP430"), "reportError");
|
System.out.println(e.getMessage());
|
}
|
// HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
|
// RestfulService.getWorkReportResultFeedback(daParamCollection.getSfcCode(),"POP430",format.format(new Date()));
|
}
|
|
@Override
|
public void manualWorkstationsAddBasicParameters(DaParamCollection daParamCollection) {
|
// 假设这是从数据库或其他地方获取的参数数据
|
Map<String, String> map = new HashMap<>();
|
map.put("GC", "南浔工厂");
|
map.put("CXBH", "Pack线");
|
map.put("SBBH", "设备001");
|
map.put("YGBH", SecurityUtils.getUsername());
|
map.put("GDBH", daParamCollection.getWorkOrderNo());
|
map.put("CPXH", daParamCollection.getProductCode());
|
map.put("INT", format.format(daParamCollection.getInboundTime()));
|
map.put("OUTT",format.format(new Date()));
|
|
map.forEach((key, value) -> {
|
DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
|
daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode());
|
daCollectionParamConf.setCollectParameterId(key);
|
List<DaCollectionParamConf> daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf);
|
DaParamCollection saveData = new DaParamCollection();
|
saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo());
|
saveData.setProductCode(daParamCollection.getProductCode());
|
saveData.setLocationCode(daParamCollection.getLocationCode());
|
saveData.setSfcCode(daParamCollection.getProductBarcode());
|
saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId());
|
saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName());
|
saveData.setCollectionTime(new Date());
|
saveData.setParamValue(value);
|
daParamCollectionMapper.insertDaParamCollection(saveData);
|
|
DaParamCollectionTemp saveDataTemp = new DaParamCollectionTemp();
|
saveDataTemp.setWorkOrderNo(daParamCollection.getWorkOrderNo());
|
saveDataTemp.setProductCode(daParamCollection.getProductCode());
|
saveDataTemp.setLocationCode(daParamCollection.getLocationCode());
|
saveDataTemp.setSfcCode(daParamCollection.getProductBarcode());
|
saveDataTemp.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId());
|
saveDataTemp.setParamName(daCollectionParamConfs.get(0).getCollectParameterName());
|
saveDataTemp.setCollectionTime(new Date());
|
saveDataTemp.setParamValue(value);
|
daParamCollectionTempService.save(saveDataTemp);
|
|
});
|
}
|
|
@Override
|
public void preInstallOut(DaParamCollection daParamCollection) {
|
String locationCode = daParamCollection.getLocationCode();
|
//增加过站记录
|
DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection();
|
daPassingStationCollection.setSfcCode(daParamCollection.getProductBarcode());
|
daPassingStationCollection.setLocationCode(locationCode);
|
daPassingStationCollection.setInboundTime(daParamCollection.getInboundTime());
|
daPassingStationCollection.setOutboundTime(new Date());
|
daPassingStationCollection.setCreateTime(new Date());
|
daPassingStationCollection.setOutRsSign("1");
|
boolean save = daPassingStationCollectionService.save(daPassingStationCollection);
|
//添加基础参数
|
this.manualWorkstationsAddBasicParameters(daParamCollection);
|
|
try {
|
String str = "PACK."+locationCode+".RecordDataDone";
|
miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(str).value(21).build());
|
logger.info("预装工位写入OPC成功,工位:{},值{}",str,21);
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
}
|
|
@Override
|
public AjaxResult addRepairTighteningData(DaParamCollection daParamCollection) {
|
try {
|
String url = "https://imes-group.geelycv.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
|
// String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
|
String processesCode = daParamCollection.getLocationCode();
|
|
long timestampMillis = Instant.now().toEpochMilli();
|
ParentVO parentVO = new ParentVO();
|
List<ChildVO> childVOList = new ArrayList<>();
|
parentVO.setSiteCode("3983");
|
parentVO.setRecordId(""+timestampMillis);
|
parentVO.setStationCode(processesCode);
|
parentVO.setProductNum(daParamCollection.getSfcCode());
|
parentVO.setTotalResult("1");
|
parentVO.setCheckList(childVOList);
|
|
String screwNumber = daParamCollection.getScrewNumber();
|
String torque = daParamCollection.getTorque();
|
String angle = daParamCollection.getAngle();
|
String torqueResult = daParamCollection.getTorqueResult();
|
String angleResult = daParamCollection.getAngleResult();
|
|
Map<String, String> map = new HashMap<>();
|
map.put("POP320","模组");
|
map.put("POP400","箱盖");
|
|
List<String> nameLikeString = new ArrayList<>();
|
nameLikeString.add(map.get(processesCode)+"拧紧最终扭矩");
|
nameLikeString.add(map.get(processesCode)+"拧紧最终角度");
|
nameLikeString.add(map.get(processesCode)+"拧紧最终扭矩是否在范围内");
|
nameLikeString.add(map.get(processesCode)+"拧紧最终角度是否在范围内");
|
|
if(screwNumber.contains(",")){
|
String[] screwNumberSplit = screwNumber.split(",");
|
String[] torqueSplit = torque.split(",");
|
String[] angleSplit = angle.split(",");
|
String[] torqueResultSplit = torqueResult.split(",");
|
String[] angleResultSplit = angleResult.split(",");
|
|
List<String[]> dataList = new ArrayList<String[]>();
|
dataList.add(torqueSplit);
|
dataList.add(angleSplit);
|
dataList.add(torqueResultSplit);
|
dataList.add(angleResultSplit);
|
|
for (int k = 0; k < nameLikeString.size(); k++) {
|
for (int i = 0; i < screwNumberSplit.length; i++) {
|
String s1 = nameLikeString.get(k)+screwNumberSplit[i];
|
List<DaCollectionParamConf> confList = daCollectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>()
|
.eq(DaCollectionParamConf::getProcessesCode, processesCode)
|
.eq(DaCollectionParamConf::getCollectParameterName, s1)
|
);
|
DaCollectionParamConf daCollectionParamConf = confList.get(0);
|
ChildVO childVO = new ChildVO();
|
childVO.setItemCode(daCollectionParamConf.getCollectParameterId());
|
childVO.setItemType(daCollectionParamConf.getSpareField1());
|
childVO.setItemText(daCollectionParamConf.getCollectParameterName());
|
String itemValue = dataList.get(k)[i];
|
childVO.setItemValue(itemValue);
|
childVO.setCheckTime(format.format(new Date()));
|
childVO.setCheckResult("1");
|
childVOList.add(childVO);
|
}
|
}
|
}else {
|
List<String> dataList = new ArrayList<>();
|
dataList.add(torque);
|
dataList.add(angle);
|
dataList.add(torqueResult);
|
dataList.add(angleResult);
|
for (int k = 0; k < nameLikeString.size(); k++) {
|
String collectParameterName = nameLikeString.get(k)+screwNumber;
|
List<DaCollectionParamConf> confList = daCollectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>()
|
.eq(DaCollectionParamConf::getProcessesCode, processesCode)
|
.eq(DaCollectionParamConf::getCollectParameterName, collectParameterName)
|
);
|
DaCollectionParamConf daCollectionParamConf = confList.get(0);
|
ChildVO childVO = new ChildVO();
|
childVO.setItemCode(daCollectionParamConf.getCollectParameterId());
|
childVO.setItemType(daCollectionParamConf.getSpareField1());
|
childVO.setItemText(daCollectionParamConf.getCollectParameterName());
|
String itemValue = dataList.get(k);
|
childVO.setItemValue(itemValue);
|
childVO.setCheckTime(format.format(new Date()));
|
childVO.setCheckResult("1");
|
childVOList.add(childVO);
|
}
|
}
|
|
System.out.println(childVOList);
|
logger.info("工位{}-----------返修数据上传入参vo:{}",processesCode,new Gson().toJson(parentVO));
|
HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
|
logger.info("工位{}-----------返修数据上传结果:{}",processesCode,execute.body());
|
return AjaxResult.success("上传成功");
|
}catch (Exception e){
|
return AjaxResult.error("上传失败,参数不对请检查!");
|
}
|
}
|
|
public static String getRandomNumberBetween(double min, double max) {
|
return String.format("%.1f",min + (Math.random() * (max - min)));
|
}
|
|
|
}
|